婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > MySQL分區(qū)表的基本入門教程

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

熱門標(biāo)簽:云南大數(shù)據(jù)外呼系統(tǒng) 怎么更改高德地圖標(biāo)注 機(jī)器人打電銷電話 電話機(jī)器人是電腦呼號(hào)嗎 400電話到哪辦理優(yōu)惠 博樂電銷機(jī)器人 鄭州網(wǎng)絡(luò)外呼系統(tǒng)價(jià)錢 南寧外呼系統(tǒng)招商 上海市三維地圖標(biāo)注

前言

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

分區(qū)類型

  • Range分區(qū):最為常用,基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。最常見的是基于時(shí)間字段. 基于分區(qū)的列最好是整型,如果日期型的可以使用函數(shù)轉(zhuǎn)換為整型。
  • List分區(qū):LIST分區(qū)和RANGE分區(qū)類似,區(qū)別在于LIST是枚舉值列表的集合,RANGE是連續(xù)的區(qū)間值的集合。
  • Hash分區(qū):基于給定的分區(qū)個(gè)數(shù),將數(shù)據(jù)分配到不同的分區(qū),HASH分區(qū)只能針對(duì)整數(shù)進(jìn)行HASH,對(duì)于非整形的字段只能通過表達(dá)式將其轉(zhuǎn)換成整數(shù)。
  • Key分區(qū):KEY分區(qū)其實(shí)跟HASH分區(qū)差不多,不同點(diǎn)如下:
    • KEY分區(qū)允許多列,而HASH分區(qū)只允許一列。
    • 如果在有主鍵或者唯一鍵的情況下,key中分區(qū)列可不指定,默認(rèn)為主鍵或者唯一鍵,如果沒有,則必須顯性指定列。
    • 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ù)目不能超過1024
  • 不支持外鍵
  • 只能對(duì)數(shù)據(jù)表的整型列進(jìn)行分區(qū),或者數(shù)據(jù)列可以通過分區(qū)函數(shù)轉(zhuǎn)化成整型列
  • 分區(qū)表不影響自增列

常見問題

  • 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ū),否則無法增加分區(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ū)的范圍沒有包含所有可能的記錄的值

參考

  • MySQL · 最佳實(shí)踐 · 分區(qū)表基本類型
  • 互聯(lián)網(wǎng)公司為啥不使用mysql分區(qū)表?
  • How to Resolve ERROR 1481 (HY000): MAXVALUE can only be used in last partition definition

總結(jié)

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

您可能感興趣的文章:
  • Mysql臨時(shí)表及分區(qū)表區(qū)別詳解
  • MySQL最佳實(shí)踐之分區(qū)表基本類型
  • MySQL優(yōu)化之分區(qū)表
  • 解決mysql刪除用戶 bug的問題
  • MySQL對(duì)window函數(shù)執(zhí)行sum函數(shù)可能出現(xiàn)的一個(gè)Bug
  • MySQL關(guān)于exists的一個(gè)bug
  • CentOS 安裝 PHP5.5+Redis+XDebug+Nginx+MySQL全紀(jì)錄
  • 關(guān)于MySQL分區(qū)表的一個(gè)性能BUG

標(biāo)簽:恩施 秦皇島 杭州 定西 澳門 益陽 寧夏 白銀

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL分區(qū)表的基本入門教程》,本文關(guān)鍵詞  MySQL,分區(qū)表,的,基本,入門教程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL分區(qū)表的基本入門教程》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL分區(qū)表的基本入門教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 日土县| 眉山市| 平阳县| 敦化市| 天全县| 泉州市| 巩留县| 灯塔市| 思茅市| 荔波县| 崇礼县| 星座| 威海市| 清徐县| 昭通市| 茌平县| 卓尼县| 忻州市| 巴马| 酒泉市| 陈巴尔虎旗| 荔浦县| 霍邱县| 兴义市| 武川县| 吉林省| 大港区| 类乌齐县| 简阳市| 西乌珠穆沁旗| 嘉义县| 拜泉县| 辉南县| 门源| 肥东县| 乌审旗| 通许县| 太仆寺旗| 牡丹江市| 安多县| 靖西县|