亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL分區(qū)建索引以及分區(qū)介紹總結(jié)

 更新時(shí)間:2022年04月13日 10:47:46   作者:pursuer.chen  
當(dāng)mysql一張數(shù)據(jù)表中的數(shù)據(jù)達(dá)到一定的量時(shí),在其中查詢(xún)某一個(gè)數(shù)據(jù),需要花費(fèi)大量的時(shí)間,下面這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)建索引以及分區(qū)介紹的相關(guān)資料,需要的朋友可以參考下

MySQL 分區(qū)建索引介紹

mysql分區(qū)后每個(gè)分區(qū)成了獨(dú)立的文件,雖然從邏輯上還是一張表其實(shí)已經(jīng)分成了多張獨(dú)立的表,從“information_schema.INNODB_SYS_TABLES”系統(tǒng)表可以看到每個(gè)分區(qū)都存在獨(dú)立的TABLE_ID,由于Innodb數(shù)據(jù)和索引都是保存在".ibd"文件當(dāng)中(從INNODB_SYS_INDEXES系統(tǒng)表中也可以得到每個(gè)索引都是對(duì)應(yīng)各自的分區(qū)(primary key和unique也不例外)),所以分區(qū)表的索引也是隨著各個(gè)分區(qū)單獨(dú)存儲(chǔ)。

在INNODB_SYS_INDEXES系統(tǒng)表中type代表索引的類(lèi)型;0:一般的索引,1:(GEN_CLUST_INDEX)不存在主鍵索引的表,會(huì)自動(dòng)生成一個(gè)6個(gè)字節(jié)的標(biāo)示值,2:unique索引,3:primary索引;所以當(dāng)我們?cè)诜謪^(qū)表中創(chuàng)建索引時(shí)其實(shí)也是在每個(gè)分區(qū)中創(chuàng)建索引,每個(gè)分區(qū)維護(hù)各自的索引(其實(shí)也就是local index);對(duì)于一般的索引(非主鍵或者唯一)沒(méi)什么問(wèn)題由于索引樹(shù)中只保留了索引key和主鍵key(如果存在主鍵則是主鍵的key否則就是系統(tǒng)自動(dòng)生成的6個(gè)的key)不受分區(qū)的影響;但是如果表中存在主鍵就不一樣了,雖然在每個(gè)分區(qū)文件中都存在主鍵索引但是主鍵索引需要保證全局的唯一性就是所有分區(qū)中的主鍵的值都必須唯一(唯一鍵也是一樣的道理),所以在創(chuàng)建分區(qū)時(shí)如果表中存在主鍵或者唯一鍵那么分區(qū)列必須包含主鍵或者唯一鍵的部分或者全部列(全部列還好理解,部分列也可以個(gè)人猜測(cè)是為了各個(gè)分區(qū)和主鍵建立關(guān)系),由于需要保證全局性又要保證插入數(shù)據(jù)更新數(shù)據(jù)到具體的分區(qū)所以就需要將分區(qū)和主鍵建立關(guān)系,由于通過(guò)一般的索引進(jìn)行查找其它非索引字段需要通過(guò)主鍵如果主鍵不能保證全局唯一性的話(huà)那么就需要去每個(gè)分區(qū)查找了,這樣性能可想而知。

To enforce the uniqueness we only allow mapping of each unique/primary key value to one partition.If we removed this limitation it would mean that for every insert/update we need to check in every partition to verify that it is unique. Also PK-only lookups would need to look into every partition.

索引方式:

性能依次降低

1.主鍵分區(qū)

主鍵分區(qū)即字段是主鍵同時(shí)也是分區(qū)字段,性能最好

2. 部分主鍵+分區(qū)索引

使用組合主鍵里面的部分字段作為分區(qū)字段,同時(shí)將分區(qū)字段建索引

3.分區(qū)索引

沒(méi)有主鍵,只有分區(qū)字段且分區(qū)字段建索引

4.分區(qū)+分區(qū)字段沒(méi)有索引

只建了分區(qū),但是分區(qū)字段沒(méi)有建索引

MySQL 分區(qū)介紹介紹

分區(qū)是指根據(jù)一定的規(guī)則將一個(gè)大表分解成多個(gè)更小的部分,這里的規(guī)則一般就是利用分區(qū)規(guī)則將表進(jìn)行水平切分;邏輯上沒(méi)有發(fā)生變化但實(shí)際上表已經(jīng)被拆分成了多個(gè)物理對(duì)象,每個(gè)分成被劃分成了一個(gè)獨(dú)立的對(duì)象。相對(duì)于沒(méi)有分區(qū)的當(dāng)個(gè)表而言分區(qū)的表有很多的優(yōu)勢(shì)包括: 并發(fā)統(tǒng)計(jì)查詢(xún)、快速歸檔刪除分區(qū)數(shù)據(jù)、分散存儲(chǔ)、查詢(xún)性能更佳。

mysql5.7以后查詢(xún)語(yǔ)句支持指定分區(qū)例如:“ SELECT * FROM t PARTITION (p0,p1) WHERE c < 5 ”指定分區(qū)同樣適用DELETE, INSERT, REPLACE, UPDATE, and LOAD DATA, LOAD XML.

數(shù)據(jù)庫(kù)版本:mysql5.7.12

是否支持分區(qū)

SHOW PLUGINS ;

查詢(xún)partition的的狀態(tài)是active就代表支持分區(qū),如果是源碼安裝的話(huà)在編譯的過(guò)程中要添加“-DWITH_PARTITION_STORAGE_ENGINE=1 \”。

注意: MERGE, CSV, or FEDERATED存儲(chǔ)引擎不支持分區(qū),同一個(gè)表所有的分區(qū)必須使用相同的存儲(chǔ)引擎,不能分區(qū)1使用MYISAM分區(qū)2又使用INNODB;不同的分區(qū)表可以是不同的存儲(chǔ)引擎。

分區(qū)介紹

目前mysql可用的分區(qū)類(lèi)型主要有以下幾種:

RANGE分區(qū):基于一個(gè)給定的連續(xù)區(qū)間范圍,RANGE主要是基于整數(shù)的分區(qū),對(duì)于非整形的字段需要利用表達(dá)式將其轉(zhuǎn)換成整形。

LIST分區(qū):是基于列出的枚舉值列表進(jìn)行分區(qū)。

COLUMNS分區(qū):可以無(wú)需通過(guò)表達(dá)式進(jìn)行轉(zhuǎn)換直接對(duì)非整形字段進(jìn)行分區(qū),同時(shí)COLUMNS分區(qū)還支持多個(gè)字段組合分區(qū),只有RANGELIST存在COLUMNS分區(qū),COLUMNS是RANGE和LIST分區(qū)的升級(jí)。

HASH分區(qū):基于給定的分區(qū)個(gè)數(shù),將數(shù)據(jù)分配到不同的分區(qū),HASH分區(qū)只能針對(duì)整數(shù)進(jìn)行HASH,對(duì)于非整形的字段只能通過(guò)表達(dá)式將其轉(zhuǎn)換成整數(shù)。

KEY分區(qū):支持除text和BLOB之外的所有數(shù)據(jù)類(lèi)型的分區(qū),key分區(qū)可以直接基于字段做分區(qū)無(wú)需轉(zhuǎn)換成整數(shù)。

說(shuō)明

1.注意分區(qū)名的大小寫(xiě)敏感問(wèn)題,和關(guān)鍵字問(wèn)題。

2.無(wú)論哪種分區(qū)類(lèi)型,要么分區(qū)表中沒(méi)有主鍵或唯一鍵,要么主鍵或唯一鍵包含在分區(qū)列里面,對(duì)于存在主鍵或者唯一鍵的表不能使用主鍵或者唯一鍵之外的字段作為分區(qū)字段。

3.5.7以前的版本顯示分區(qū)的執(zhí)行計(jì)劃使用:explain PARTITIONS;5.7以后直接執(zhí)行:explain

4.沒(méi)有強(qiáng)制要求分區(qū)列非空,建議分區(qū)的列為NOT NULL的列;在RANGE 分區(qū)中如果往分區(qū)列中插入NULL值會(huì)被當(dāng)作最小的值來(lái)處理,在LIST分區(qū)中NULL值必須在枚舉列表中否則插入失敗,在HASH/KEY分區(qū)中NULL值會(huì)被當(dāng)作0來(lái)處理。

5.基于時(shí)間類(lèi)型的字段的轉(zhuǎn)換函數(shù)mysql提供了"YEAR(),MONTH(),DAY(),TO_DAYS(),TO_SECONDS(),WEEKDAY(),DAYOFYEAR()"

6.拆分合并分區(qū)后會(huì)導(dǎo)致修改的分區(qū)的統(tǒng)計(jì)信息失效,沒(méi)有修改的分區(qū)的統(tǒng)計(jì)信息還在,不影響新插入的值加入到統(tǒng)計(jì)信息;這時(shí)需要對(duì)表執(zhí)行Analyze操作.

7.針對(duì)非整形字段進(jìn)行RANG\LIST分區(qū)建議使用COLUMNS分區(qū)。

刪除增加分區(qū)

在每個(gè)分區(qū)內(nèi)容介紹中詳細(xì)介紹了每種分區(qū)的用法,但是都是介紹在創(chuàng)建表的時(shí)候創(chuàng)建分區(qū)和修改刪除分區(qū)單個(gè),也可以在一張已經(jīng)存在的表中加入分區(qū),可以一次性刪除整個(gè)表的分區(qū)。

1.移除表的分區(qū)

ALTER TABLE tablename
REMOVE PARTITIONING ;

注意:使用remove移除分區(qū)是僅僅移除分區(qū)的定義,并不會(huì)刪除數(shù)據(jù)和drop PARTITION不一樣,后者會(huì)連同數(shù)據(jù)一起刪除

2.對(duì)已經(jīng)存在記錄的表創(chuàng)建分區(qū),以增加range分區(qū)為例,和創(chuàng)建表建分區(qū)的語(yǔ)法一樣。

ALTER TABLE `tb_partition`.`tb_varchar` 
PARTITION BY RANGE(id) PARTITIONS 3( PARTITION part0 VALUES LESS THAN (5000),  PARTITION part1 VALUES LESS THAN (10000),  PARTITION part2 VALUES LESS THAN (MAXVALUE)) ;

注意:對(duì)已有的表創(chuàng)建分區(qū)之后,數(shù)據(jù)會(huì)按照分區(qū)的定義分布到各個(gè)分區(qū)文件當(dāng)中

分區(qū)系列文章: 

RANGE分區(qū):http://chabaoo.cn/article/244269.htm

COLUMN分區(qū):http://chabaoo.cn/article/96515.htm

LIST分區(qū):http://chabaoo.cn/article/244256.htm

HASH分區(qū):http://chabaoo.cn/article/244277.htm

KEY分區(qū):http://chabaoo.cn/article/244282.htm

子分區(qū):http://chabaoo.cn/article/244294.htm

指定各分區(qū)路徑:http://chabaoo.cn/article/244296.htm

分區(qū)索引以及分區(qū)介紹總結(jié):http://chabaoo.cn/article/244300.htm

總結(jié)

到此這篇關(guān)于MySQL分區(qū)建索引以及分區(qū)介紹總結(jié)的文章就介紹到這了,更多相關(guān)MySQL分區(qū)建索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 5.7.18 綠色版下載安裝教程

    mysql 5.7.18 綠色版下載安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.18 綠色版下載安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • MySQL 替換某字段內(nèi)部分內(nèi)容的UPDATE語(yǔ)句

    MySQL 替換某字段內(nèi)部分內(nèi)容的UPDATE語(yǔ)句

    至于字段內(nèi)部分內(nèi)容:比如替換標(biāo)題里面的產(chǎn)品價(jià)格,接下來(lái)為你詳細(xì)介紹下UPDATE語(yǔ)句的寫(xiě)法,感興趣的你可以參考下哈,希望可以幫助到你
    2013-03-03
  • 手把手帶你徹底卸載MySQL數(shù)據(jù)庫(kù)

    手把手帶你徹底卸載MySQL數(shù)據(jù)庫(kù)

    相信大家都因?yàn)楦鞣N各樣的原因可能需要卸載MySQL或者卸載重裝,但是如果MySQL不能清理干凈的話(huà)是很容易出現(xiàn)問(wèn)題的,這篇文章主要給大家介紹了關(guān)于如何徹底卸載MySQL數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 快速修改mysql密碼的四種方法示例詳解

    快速修改mysql密碼的四種方法示例詳解

    mysql密碼忘記怎么辦,如何快速修改mysql密碼,下面給大家?guī)?lái)四種方法快速修改mysql密碼,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • 詳解Windows?Server?2012下安裝MYSQL5.7.24的問(wèn)題

    詳解Windows?Server?2012下安裝MYSQL5.7.24的問(wèn)題

    這篇文章主要介紹了Windows?Server?2012下安裝MYSQL5.7.24的詳細(xì)過(guò)程,本文通過(guò)圖文并茂實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • mysql臨時(shí)表(temporary?table)使用方法詳解

    mysql臨時(shí)表(temporary?table)使用方法詳解

    MySQL臨時(shí)表在很多場(chǎng)景中都會(huì)用到,MySQL內(nèi)部在執(zhí)行復(fù)雜SQL時(shí),需要借助臨時(shí)表進(jìn)行分組、排序、去重等操作,下面這篇文章主要給大家介紹了關(guān)于mysql臨時(shí)表(temporary?table)使用方法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 解決遠(yuǎn)程連接mysql很慢的方法(mysql_connect 打開(kāi)連接慢)

    解決遠(yuǎn)程連接mysql很慢的方法(mysql_connect 打開(kāi)連接慢)

    有次同事提出開(kāi)發(fā)使用的mysql數(shù)據(jù)庫(kù)連接很慢,因?yàn)槲覀兊膍ysql開(kāi)發(fā)數(shù)據(jù)庫(kù)是單獨(dú)一臺(tái)機(jī)器部署的,所以認(rèn)為可能是網(wǎng)絡(luò)連接問(wèn)題導(dǎo)致的。
    2011-07-07
  • mysql利用group_concat()合并多行數(shù)據(jù)到一行

    mysql利用group_concat()合并多行數(shù)據(jù)到一行

    把查詢(xún)name字段得到的多行記錄進(jìn)行合并,可以通過(guò)程序?qū)崿F(xiàn),但也可直接在sql層完成,需要的朋友可以參考下
    2014-07-07
  • 一文詳細(xì)講解如何查看mysql里面的鎖

    一文詳細(xì)講解如何查看mysql里面的鎖

    鎖是MySQL里面最難理解的知識(shí),但是又無(wú)處不在,下面這篇文章主要給大家介紹了關(guān)于關(guān)于如何查看mysql里面鎖的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • ubuntu kylin 14.10下多個(gè)mysql 5.7.14安裝教程

    ubuntu kylin 14.10下多個(gè)mysql 5.7.14安裝教程

    這篇文章主要為大家分享了ubuntu kylin 14.10下多個(gè)mysql 5.7.14安裝教程,感興趣的朋友可以參考一下
    2016-08-08

最新評(píng)論