欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL分區(qū)表的基本入門(mén)教程

 更新時(shí)間:2020年05月31日 14:58:07   作者:十毛tenmao  
這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)表的基本入門(mén)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

在最近的項(xiàng)目中,我們需要保存大量的數(shù)據(jù),而且這些數(shù)據(jù)是有有效期的,為了提供查詢效率以及快速刪除過(guò)期數(shù)據(jù),我們選擇了MySQL的分區(qū)機(jī)制。把數(shù)據(jù)按照時(shí)間進(jìn)行分區(qū)。

分區(qū)類(lèi)型

  • Range分區(qū):最為常用,基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。最常見(jiàn)的是基于時(shí)間字段. 基于分區(qū)的列最好是整型,如果日期型的可以使用函數(shù)轉(zhuǎn)換為整型。
  • List分區(qū):LIST分區(qū)和RANGE分區(qū)類(lèi)似,區(qū)別在于LIST是枚舉值列表的集合,RANGE是連續(xù)的區(qū)間值的集合。
  • Hash分區(qū):基于給定的分區(qū)個(gè)數(shù),將數(shù)據(jù)分配到不同的分區(qū),HASH分區(qū)只能針對(duì)整數(shù)進(jìn)行HASH,對(duì)于非整形的字段只能通過(guò)表達(dá)式將其轉(zhuǎn)換成整數(shù)。
  • Key分區(qū):KEY分區(qū)其實(shí)跟HASH分區(qū)差不多,不同點(diǎn)如下:
    • KEY分區(qū)允許多列,而HASH分區(qū)只允許一列。
    • 如果在有主鍵或者唯一鍵的情況下,key中分區(qū)列可不指定,默認(rèn)為主鍵或者唯一鍵,如果沒(méi)有,則必須顯性指定列。
    • KEY分區(qū)對(duì)象必須為列,而不能是基于列的表達(dá)式。
    • KEY分區(qū)和HASH分區(qū)的算法不一樣,PARTITION BY HASH (expr),MOD取值的對(duì)象是expr返回的值,而PARTITION BY KEY (column_list),基于的是列的MD5值。

分區(qū)命令

創(chuàng)建分區(qū)

CREATE TABLE `access_log` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_time` datetime NOT NULL,
 PRIMARY KEY (`id`,`access_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY RANGE (to_days(access_time))
(PARTITION p1 VALUES LESS THAN (to_days(20190101)) ENGINE = InnoDB,
 PARTITION p2 VALUES LESS THAN (to_days(20190102)) ENGINE = InnoDB,
 PARTITION p3 VALUES LESS THAN (to_days(20190103)) ENGINE = InnoDB) */;

創(chuàng)建后可以看到,每個(gè)分區(qū)都會(huì)對(duì)應(yīng)1個(gè)ibd文件


分區(qū)表

新增分區(qū)

alter table access_log add partition(
 partition p4 values less than (to_days('20190105'))
);

刪除分區(qū)

alter table access_log drop partition p1;

拆分分區(qū)

alter table access_log reorganize partition p4 into(
 -> partition s0 values less than(to_days('20190104')),
 -> partition s1 values less than(to_days('20190105'))
 -> );

合并分區(qū)

alter table access_log reorganize partition s0,s1 into ( 
 partition p4 values less than (to_days('20190105')) 
);

注意事項(xiàng)

  • MySQL分區(qū)中如果存在主鍵或唯一鍵,則分區(qū)列必須包含在其中(否則判斷主鍵或唯一時(shí),需要掃描所有分區(qū))
  • 分區(qū)字段不能為NULL,要不然怎么確定分區(qū)范圍呢,所以盡量NOT NULL
  • 最大分區(qū)數(shù)目不能超過(guò)1024
  • 不支持外鍵
  • 只能對(duì)數(shù)據(jù)表的整型列進(jìn)行分區(qū),或者數(shù)據(jù)列可以通過(guò)分區(qū)函數(shù)轉(zhuǎn)化成整型列
  • 分區(qū)表不影響自增列

常見(jiàn)問(wèn)題

  • A PRIMARY KEY must include all columns in the table's partitioning function:這樣的話判斷主鍵是否唯一就可以在單個(gè)分區(qū)內(nèi)部完成,否則就需要跨所有的分區(qū)
  • MAXVALUE can only be used in last partition definition:RANGE表分區(qū)后不能帶MAXVALUE分區(qū),否則無(wú)法增加分區(qū)?;蛘呔椭荒苤匦路謪^(qū)了
alter table access_log partition by range(to_days(access_time))(
partition p1 values less than (to_days('20191202')), 
partition p2 values less than (to_days('20191203')), 
 partition po values less than (maxvalue)
)
  • Table has no partition for value 737425:因?yàn)榉謪^(qū)的范圍沒(méi)有包含所有可能的記錄的值

參考

總結(jié)

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

相關(guān)文章

  • Mysql高性能優(yōu)化技能總結(jié)

    Mysql高性能優(yōu)化技能總結(jié)

    這篇文章主要介紹了Mysql高性能優(yōu)化技能總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2020-02-02
  • MySql Error 1698(28000)問(wèn)題的解決方法

    MySql Error 1698(28000)問(wèn)題的解決方法

    這篇文章主要介紹了MySql Error 1698(28000)問(wèn)題的解決方法,需要的朋友可以參考下
    2017-06-06
  • Linux安裝MySQL5.6.24使用文字說(shuō)明

    Linux安裝MySQL5.6.24使用文字說(shuō)明

    這篇文章主要為大家詳細(xì)介紹了Linux安裝MySQL使用文字說(shuō)明,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Mysql中的多級(jí)復(fù)制方式

    Mysql中的多級(jí)復(fù)制方式

    這篇文章主要介紹了Mysql中的多級(jí)復(fù)制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySql三種避免重復(fù)插入數(shù)據(jù)的方法

    MySql三種避免重復(fù)插入數(shù)據(jù)的方法

    這篇文章主要介紹了MySql三種避免重復(fù)插入數(shù)據(jù)的方法,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • 定時(shí)備份 Mysql并上傳到七牛的方法

    定時(shí)備份 Mysql并上傳到七牛的方法

    常見(jiàn)的 MySQL 數(shù)據(jù)備份方式有,直接打包復(fù)制對(duì)應(yīng)的數(shù)據(jù)庫(kù)或表文件(物理備份)、mysqldump 全量邏輯備份、xtrabackup 增量邏輯備份等。這篇文章主要介紹了定時(shí)備份 MySQL 并上傳到七牛 ,需要的朋友可以參考下
    2018-10-10
  • MySQL刪除表操作實(shí)現(xiàn)(delete、truncate、drop的區(qū)別)

    MySQL刪除表操作實(shí)現(xiàn)(delete、truncate、drop的區(qū)別)

    這篇文章主要介紹了MySQL刪除表操作實(shí)現(xiàn)(delete、truncate、drop的區(qū)別),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • navicat 8 創(chuàng)建數(shù)據(jù)庫(kù)與創(chuàng)建用戶分配權(quán)限圖文方法

    navicat 8 創(chuàng)建數(shù)據(jù)庫(kù)與創(chuàng)建用戶分配權(quán)限圖文方法

    navicat是一款不錯(cuò)的圖形化管理mysql的工具,大家一般都是用phpmyadmin或直接命令行操作,對(duì)于不是很熟悉命令的朋友,就可以使用navicat這個(gè)工具了,方便操作。
    2011-04-04
  • Mysql全文搜索match against的用法

    Mysql全文搜索match against的用法

    全文檢索在 MySQL 中就是一個(gè) FULLTEXT 類(lèi)型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 時(shí)或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、 VARCHAR 或 TEXT 列上創(chuàng)建
    2011-10-10
  • MySQL查詢條件常見(jiàn)用法詳解

    MySQL查詢條件常見(jiàn)用法詳解

    這篇文章主要介紹了MySQL查詢條件常見(jiàn)用法,結(jié)合實(shí)例形式總結(jié)分析了MySQL常見(jiàn)的各類(lèi)查詢條件與簡(jiǎn)單使用方法,需要的朋友可以參考下
    2019-11-11

最新評(píng)論