自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分布式數(shù)據(jù)庫索引能力大調(diào)研

原創(chuàng) 精選
數(shù)據(jù)庫 其他數(shù)據(jù)庫
在分布式數(shù)據(jù)庫情況下,索引又有所不同,其較單機或集中式數(shù)據(jù)庫在設(shè)計、管理、優(yōu)化方面有一定的差異。本文針對國內(nèi)主流的一些分布式數(shù)據(jù)庫,針對索引功能做了個小調(diào)研,希望對大家能有所幫助。

索引,是數(shù)據(jù)庫中非常重要的一類對象。在數(shù)據(jù)庫中增加索引,是常見的一種優(yōu)化手段,特別是對于查詢語句的優(yōu)化,很多都可以通過增加索引方式來解決。在分布式數(shù)據(jù)庫情況下,索引又有所不同,其較單機或集中式數(shù)據(jù)庫在設(shè)計、管理、優(yōu)化方面有一定的差異。本文針對國內(nèi)主流的一些分布式數(shù)據(jù)庫,針對索引功能做了個小調(diào)研,希望對大家能有所幫助。這里特別感謝來自奧神貝斯、平凱星辰、阿里云、騰訊云、金篆信科、萬里開源老師的協(xié)助。

1. 索引概述

(1)索引優(yōu)點與缺點

索引作為一種可選的數(shù)據(jù)結(jié)構(gòu),可有效提升基于索引字段的查詢性能,用戶可根據(jù)業(yè)務(wù)自身需求進行選擇。其優(yōu)點非常明顯,即在不修改SQL語句的前提下可以加速查詢,其原理是因為通過掃描索引減少了對原表的訪問,進而節(jié)省了查詢IO,提升性能。但索引也不是什么“銀彈”,其缺點非常明顯,索引作為一種數(shù)據(jù)庫的結(jié)構(gòu),只要占據(jù)存儲空間并會導(dǎo)致數(shù)據(jù)維護成本的提高。此外,隨著業(yè)務(wù)調(diào)整變化,原索引也需要人工維護。

(2)分布式下索引特殊性

在分布式數(shù)據(jù)庫中,數(shù)據(jù)是采用分片方式存儲,即表中的數(shù)據(jù)存在在不同節(jié)點上。在索引中需要記錄索引列及對應(yīng)在原表中的位置,故其使用維護成本是比較高的。而且數(shù)據(jù)的拆分情況下,數(shù)據(jù)規(guī)模減少了很多,是否還需要通過索引加速訪問也值得商榷。很多單機或集中式數(shù)據(jù)庫遷移到分布式數(shù)據(jù)庫時,其對應(yīng)的索引策略是不建議直接平移過來,需要結(jié)合分片設(shè)計做單獨考慮。

(3)索引使用建議

如何更好地使用索引,有一些通用的建議:

  • 索引建立,應(yīng)遵循最左前綴原則。
  • 盡量選擇基數(shù)較高的字段,所謂索引字段。
  • 為經(jīng)常參加過濾、關(guān)聯(lián)、排序的字段創(chuàng)建索引。
  • 可以利用覆蓋索引,有效避免回表操作。

針對分布式數(shù)據(jù)庫中的索引,有些不同的建議:

  • 減少不必要的全局索引,因為其維護代價很高。
  • 在數(shù)據(jù)分片下,數(shù)據(jù)規(guī)模進一步縮小,需考慮創(chuàng)建索引的必要性。

2. 索引能力大對比

近些年來,國內(nèi)涌現(xiàn)出一大批分布式數(shù)據(jù)庫產(chǎn)品,其架構(gòu)不同、功能各異。用戶在使用時,面臨一個普遍問題就是選型,作為重要的考察功能之一,索引也是大家非常關(guān)注的一點。這里針對國內(nèi)的一些主流分布式數(shù)據(jù)庫在索引功能上的情況,做了個簡單調(diào)研。

TiDB中的索引都被認為是全局索引,故不存在本地索引說法。

(1)索引類型

這里談的索引類型,是指索引是否有獨立的數(shù)據(jù)分布模式。也就是說,索引是否是按照跟表相同的數(shù)據(jù)分布方式,還是自己獨立一套。前者通常被稱為本地索引、局部索引,后者則被稱為全局索引、二級索引等。對于本地索引而言,由于其數(shù)據(jù)分布與表相同,因此如果想使用使用是需要配合分區(qū)鍵的,能精確定位到分區(qū)的場景。對于全局索引而言,則沒有這個限制,可以按照非分區(qū)鍵的維度進行查詢。通常全局索引也是使用在不包含分區(qū)鍵的多維度查詢場景。當(dāng)然其付出的代價也很大,每一筆數(shù)據(jù)都有可能會演化為跨機的分布式事務(wù),對數(shù)據(jù)庫的吞吐、延時等都會造成影響。這里可參考下網(wǎng)上一篇評測報告。因此通常建議嚴格區(qū)分場景,優(yōu)先使用本地索引來解決,確實不能解決的再考慮全局索引,但也要嚴格控制全局索引的個數(shù)。從產(chǎn)品上來看,大部分分布式數(shù)據(jù)庫產(chǎn)品都支持了全局索引,這也是為了迎合用戶之前基于單機/集中式數(shù)據(jù)庫的使用習(xí)慣。當(dāng)然這里還是強調(diào)下,在分布式數(shù)據(jù)庫中不能一味遷就原有的結(jié)構(gòu)設(shè)計,為了獲得性能與效率的平衡,是需要考慮在應(yīng)用側(cè)做些妥協(xié)的。這里需要注意的是 TiDB,因其數(shù)據(jù)天然具備的自動拆分特點,其索引都可被視為全局索引。

(2)支持表類型

在分布式數(shù)據(jù)庫中,索引支持在哪些表中創(chuàng)建。很多分布式數(shù)據(jù)庫支持創(chuàng)建分區(qū)表(或叫分片表),也支持創(chuàng)建非分區(qū)表。對應(yīng)的索引是否支持在不同類型的表上創(chuàng)建。一般情況下,分區(qū)表上可以創(chuàng)建分區(qū)索引(可能是全局的或本地的),非分區(qū)表沒有創(chuàng)建分區(qū)索引的意義。從產(chǎn)品來看,大部分產(chǎn)品都支持在不同類型的表上創(chuàng)建索引。TiDB 因其自身技術(shù)設(shè)計,其表都為分區(qū)表,因此不涉及這個問題。

(3)索引唯一性

唯一索引可以確保表中的某個字段(或組合)的唯一性。在分布式數(shù)據(jù)庫中,由于數(shù)據(jù)分片存儲,確保唯一性是個挺難的事。因此大多數(shù)情況下,唯一索引是包含分區(qū)鍵的組合索引,這樣維護的代價相對較小。從產(chǎn)品上看,上述產(chǎn)品都支持了索引的唯一性。

(4)索引列個數(shù)

索引字段可支持一個或多個。從產(chǎn)品上看,上述產(chǎn)品都支持單鍵索引和復(fù)合索引。

(5)索引有序

索引作為一種有序的數(shù)據(jù)存儲結(jié)構(gòu),可以按照數(shù)據(jù)升序順序存儲,也可以按降序存儲,因此創(chuàng)建的索引就有升序索引和降序索引。在進行數(shù)據(jù)排序類訪問時(如Order By),可利用索引的有序性來提升訪問性能。當(dāng)訪問操作需要按照不同于索引排序的方式訪問時(如對索引列降序訪問,但只存在升序索引),有的數(shù)據(jù)庫是可以利用升序索引來解決,有的則只能退化為表掃描方式解決。例如在MySQL 8.0中就支持“Backward index scan”來解決此問題。從產(chǎn)品來看,部分產(chǎn)品支持降序索引,部分產(chǎn)品還不支持。

(6)特殊索引

除了常規(guī)的 BTree 索引外,有些數(shù)據(jù)庫還支持特殊類型的索引,這里舉例如空間索引和函數(shù)索引。前者是一種用于加速空間數(shù)據(jù)的查詢的特殊索引類型,主要應(yīng)用于地理信息系統(tǒng)(GIS)和空間數(shù)據(jù)處理領(lǐng)域;后者則是支持對函數(shù)或者表達式做索引。這些能力無疑會擴展索引的使用范圍。從產(chǎn)品上看,廠商能力參差不齊,特別是針對空間索引。

(7)其他能力

索引的其他能力,這里列舉了幾種常見的。一是索引提示,針對復(fù)雜數(shù)據(jù)訪問場景或優(yōu)化器尚不穩(wěn)定時,提示是一種有效的應(yīng)急/規(guī)避手段。上述產(chǎn)品也都支持了此功能。索引合并,是指 Index Merge 功能,大部分產(chǎn)品已經(jīng)支持,少數(shù)產(chǎn)品還不行。索引可見性則是指優(yōu)化器是否忽略該索引,這對于索引維護、系統(tǒng)優(yōu)化有一定幫助,上述產(chǎn)品也都支持了。最后則是索引強一致,這也是對索引的最基本要求,也是數(shù)據(jù)庫與中間件產(chǎn)品的差異,上述產(chǎn)品也都支持。

責(zé)任編輯:姜華 來源: 韓鋒頻道
相關(guān)推薦

2023-12-15 07:34:56

分布式數(shù)據(jù)庫數(shù)據(jù)庫租戶軟件架構(gòu)

2021-12-20 15:44:28

ShardingSph分布式數(shù)據(jù)庫開源

2023-12-05 07:30:40

KlustronBa數(shù)據(jù)庫

2022-03-10 06:36:59

分布式數(shù)據(jù)庫排序

2023-07-31 08:27:55

分布式數(shù)據(jù)庫架構(gòu)

2020-06-23 09:35:13

分布式數(shù)據(jù)庫網(wǎng)絡(luò)

2023-03-07 09:49:04

分布式數(shù)據(jù)庫

2023-07-28 07:56:45

分布式數(shù)據(jù)庫SQL

2024-09-09 09:19:57

2022-08-01 18:33:45

關(guān)系型數(shù)據(jù)庫大數(shù)據(jù)

2024-03-11 08:57:02

國產(chǎn)數(shù)據(jù)庫證券

2023-11-14 08:24:59

性能Scylla系統(tǒng)架構(gòu)

2021-12-30 18:15:56

數(shù)據(jù)庫TDSQL

2018-05-25 13:12:10

UCloud數(shù)據(jù)庫UDDB

2022-06-09 10:19:10

分布式數(shù)據(jù)庫

2023-04-26 06:56:31

分布式數(shù)據(jù)庫偽需求

2012-09-29 13:18:23

分布式數(shù)據(jù)庫Google Span

2021-12-14 10:16:00

鴻蒙HarmonyOS應(yīng)用

2011-03-24 17:15:06

分布式數(shù)據(jù)庫系統(tǒng)

2024-07-25 07:55:37

點贊
收藏

51CTO技術(shù)棧公眾號