91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL分區摘要

發布時間:2020-07-22 04:42:58 來源:網絡 閱讀:520 作者:layveen 欄目:MySQL數據庫

MySQL支持的分區類型為水平分區,并不支持垂直分區。

水平分區,以行為單位,劃分到不同的物理文件中;垂直分區即針對列劃分。

MySQL的分區,除了InnoDB支持,MyISAM也支持,所以分區并不是引擎級別的事兒。

分區并不一定會讓訪問變得更快,尤其是OLTP應用,OLAP應用使用分區的效果往往更好。

MySQL支持的如下幾種分區類型。

  • RANGE 行數據基于一個給定連續區間的列值劃分。
  • LIST 和RANGE類似,只是LIST面向的不是連續區間值,而是離散的集合。
  • HASH 根據自定義的表達式返回值進行分區,不支持負數返回。
  • KEY 根據MySQL提供的hash函數進行分區

不論按照哪種類型進行分區,如果當前表有主鍵或者唯一索引,分區列必須是唯一索引的組成部分。反過來,如果當前表沒有定義主鍵也沒有唯一索引,分區列可以是任何列。


分區操作示例:

create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by range(season) (
prtition s1 values less than (4),
partition s2 values less than (7),
partition s3 values less than (10),
partition s4 values less than (13));

使用函數獲取range值

create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by range(year(finyear)) ( 
partition s1 values less than (2016), 
partition s2 values less than (2017), 
partition s3 values less than (2018),
partition s4 values less than (2020));
create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by range(year(finyear)*100+ month(finyear)) ( 
partition s1 values less than (201804), 
partition s2 values less than (201807), 
partition s3 values less than (201810),
partition s4 values less than (201813));

LIST分區示例

create table sales(id int, price decimal(9,2), season int, finyear datetime) 
partition by LIST(id) ( 
partition s1 values in (1,3,5,7,9), 
partition s2 values in (2,4,6,8,10));

HASH分區示例

create table sales(id int, price decimal(9,2), season int, finyear datetime) engine=innodb
partition by hash(year(finyear));

KEY分區示例

create table sales(id int, price decimal(9,2), season int, finyear datetime) engine=innodb
partition by key(finyear);
分區后的數據存儲結構及使用效果

以RANGE分區為例
MySQL分區摘要

插入數據

insert into sales select 1,10.05,1,'2018-01-01';
insert into sales select 2,10.05,3,'2018-03-01';
insert into sales select 3,10.05,4,'2018-04-01';

執行查詢

explain partitions 
select * from sales where finyear < '2016-01-01';

MySQL分區摘要

可以看到,查詢優化器,直接跳過第四個分區,在前三個分區中查詢,這就是要的效果。

除了分區,還有分表、分庫、分片操作,每一個都很重要,也都有各自的適用場景。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 颍上县| 浏阳市| 贞丰县| 西贡区| 平山县| 福鼎市| 东阿县| 阜阳市| 页游| 曲靖市| 清流县| 平泉县| 思茅市| 济南市| 广平县| 荆州市| 南涧| 满洲里市| 武鸣县| 四川省| 遵化市| 沙洋县| 余庆县| 萨迦县| 文山县| 南江县| 三亚市| 阿拉善右旗| 鸡泽县| 巨鹿县| 永昌县| 安康市| 江安县| 济南市| 徐汇区| 延边| 尼勒克县| 荣昌县| 福安市| 夏河县|