欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > MySQL分區表的正確使用方法

MySQL分區表的正確使用方法

熱門標簽:電話機器人市場趨勢 昆明電信400電話辦理 南昌高頻外呼系統哪家公司做的好 百度地圖標注后不顯示 淄博400電話申請 俄國地圖標注app 溫州瑞安400電話怎么申請 電銷機器人各個細節介紹 電銷機器人 行業

MySQL分區表概述

我們經常遇到一張表里面保存了上億甚至過十億的記錄,這些表里面保存了大量的歷史記錄。 對于這些歷史數據的清理是一個非常頭疼事情,由于所有的數據都一個普通的表里。所以只能是啟用一個或多個帶where條件的delete語句去刪除(一般where條件是時間)。 這對數據庫的造成了很大壓力。即使我們把這些刪除了,但底層的數據文件并沒有變小。面對這類問題,最有效的方法就是在使用分區表。最常見的分區方法就是按照時間進行分區。

分區一個最大的優點就是可以非常高效的進行歷史數據的清理。

1. 確認MySQL服務器是否支持分區表

命令:

show plugins;

2. MySQL分區表的特點

在邏輯上為一個表,在物理上存儲在多個文件中

HASH分區(HASH)

HASH分區的特點

  • 根據MOD(分區鍵,分區數)的值把數據行存儲到表的不同分區中
  • 數據可以平均的分布在各個分區中
  • HASH分區的鍵值必須是一個INT類型的值,或是通過函數可以轉為INT類型

如何建立HASH分區表

以INT類型字段 customer_id為分區鍵

CREATE TABLE `customer_login_log` (
 `customer_id` int(10) unsigned NOT NULL COMMENT '登錄用戶ID',
 `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '用戶登錄時間',
 `login_ip` int(10) unsigned NOT NULL COMMENT '登錄IP',
 `login_type` tinyint(4) NOT NULL COMMENT '登錄類型:0未成功 1成功'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶登錄日志表'

PARTITION BY HASH(customer_id) PARTITIONS 4;

以非INT類型字段 login_time 為分區鍵(需要先轉換成INT類型)

CREATE TABLE `customer_login_log` (
 `customer_id` int(10) unsigned NOT NULL COMMENT '登錄用戶ID',
 `login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '用戶登錄時間',
 `login_ip` int(10) unsigned NOT NULL COMMENT '登錄IP',
 `login_type` tinyint(4) NOT NULL COMMENT '登錄類型:0未成功 1成功'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶登錄日志表'

PARTITION BY HASH(UNIX_TIMESTAMP(login_time)) PARTITIONS 4;

customer_login_log 表如果不分區,在物理磁盤上文件為

customer_login_log.frm # 存儲表原數據信息
customer_login_log.ibd # Innodb數據文件

如果按上面的建HASH分區表,則有五個文件

customer_login_log.frm 
customer_login_log#P#p0.ibd
customer_login_log#P#p1.ibd
customer_login_log#P#p2.ibd
customer_login_log#P#p3.ibd

演示

使用起來和不分區是一樣的,看起來只有一個數據庫,其實有多個分區文件,比如我們要插入一條數據,不需要指定分區,MySQL會自動幫我們處理

查詢

范圍分區(RANGE)

RANGE分區特點

  • 根據分區鍵值的范圍把數據行存儲到表的不同分區中
  • 多個分區的范圍要連續,但是不能重疊
  • 默認情況下使用VALUES LESS THAN屬性,即每個分區不包括指定的那個值

如何建立RANGE分區

如果沒有定義p3分區,當插入的customer_id大于29999時會報錯,定義了則超過的數據都存入p3中

RANGE分區的適用場景

  • 分區鍵為日期或是時間類型 (可以使得各個分區表的數據比較均衡,如果按上面的例子中以整型id為分區鍵,假如活躍用戶集中在10000-19999之間,則p1中的數據量就會比其他分區的數據量大很多,這就失去了分區的意義;而且按時間類型分區,如果要按時間順序進行數據的歸檔,則只需要對某一個分區進行歸檔就可以了)
  • 所有查詢中都包括分區鍵(避免跨分區查詢)
  • 定期按分區范圍清理歷史數據

LIST分區

LIST分區的特點

  • 按分區鍵取值的列表進行分區
  • 同范圍分區一樣,各分區的列表值不能重復
  • 每一行數據必須能找到對應的分區列表,否則數據插入失敗

如何建立LIST分區

如果插入一條login_type為10的數據行,則會報錯

3. 如何為登錄日志表(customer_login_log)分區

業務場景

  • 用戶每次登錄都會記錄customer_login_log日志
  • 用戶登錄日志保存一年,1年后可以刪除或者歸檔

登錄日志表的分區類型及分區鍵

  • 使用RANGE分區
  • 以login_time為分區鍵

分區后的用戶登錄日志表

按年份分區存儲,所以用YEAR函數進行了轉化

CREATE TABLE `customer_login_log` (
 `customer_id` int(10) unsigned NOT NULL COMMENT '登錄用戶ID',
 `login_time` DATETIME NOT NULL COMMENT '用戶登錄時間',
 `login_ip` int(10) unsigned NOT NULL COMMENT '登錄IP',
 `login_type` tinyint(4) NOT NULL COMMENT '登錄類型:0未成功 1成功'
) ENGINE=InnoDB 
PARTITION BY RANGE (YEAR(login_time))(
PARTITION p0 VALUES LESS THAN (2017),
PARTITION p1 VALUES LESS THAN (2018),
PARTITION p2 VALUES LESS THAN (2019)
) 

插入并查詢數據

查詢指定表中的分區數據情況

SELECT table_name,partition_name,partition_description,table_rows FROM
information_schema.`PARTITIONS` WHERE table_name = 'customer_login_log';

再插入2條18年的日志,會存入p2表中

之前說過建立分區表時,最好建立一個MAXVALUE的分區,這里之所以沒有建立,是為了數據維護的方便,如果我們建立了MAXVALUE分區,很容易忽視一個問題,當我們2019年有的數據插入時,會自動存入那個MAXVALUE分區中,之后在做數據維護時會不方便,所以沒有建立MAXVALUE分區

而是通過計劃任務的方式,在每年年底的時候增加這個分區,比如我們現在在2018年年底,我們需要在日志表中為2019年建立日志分區,否則2019年的日志都會插入失敗

我們可以通過下面語句

增加分區

ALTER TABLE customer_login_log ADD PARTITION (PARTITION p3 VALUES LESS THAN(2020))

增加分區,并插入數據

刪除分區

假如我們現在要刪除2016年到2017年間一年的數據,因為我們已經做了分區,所以只需要通過一條語句,刪除p0分區即可

ALTER TABLE customer_login_log DROP PARTITION p0;

可以發現p0分區已被刪除,且2016年的日志全部被清除了

歸檔分區歷史數據

我們可能有另一種需求對數據進行歸檔

Mysql版本>=5.7,歸檔分區歷史數據非常方便,提供了一個交換分區的方法

分區數據歸檔遷移條件:

  • MySQL>=5.7
  • 結構相同
  • 歸檔到的數據表一定要是非分區表
  • 非臨時表;不能有外鍵約束
  • 歸檔引擎要是:archive

建表并交換分區

CREATE TABLE `arch_customer_login_log` (
 `customer_id` INT unsigned NOT NULL COMMENT '登錄用戶ID',
 `login_time` DATETIME NOT NULL COMMENT '用戶登錄時間',
 `login_ip` INT unsigned NOT NULL COMMENT '登錄IP',
 `login_type` TINYINT NOT NULL COMMENT '登錄類型:0未成功 1成功'
) ENGINE=InnoDB ;

ALTER TABLE customer_login_log 
 exchange PARTITION p1 WITH TABLE arch_customer_login_log;

可以發現,原customer_login_log表中的2017年的數據(p1分區中的數據)已轉移到了arch_customer_login_log表中,但是p1分區未刪除,只是數據轉移了,所以我們還需要執行DROP命令刪除分區,以免有數據插入其中

將歸檔數據的存儲引擎改為歸檔引擎

最后我們將歸檔數據的存儲引擎改為歸檔引擎,命令為

ALTER TABLE customer_login_log ENGINE=ARCHIVE;

使用歸檔引擎的好處是:它比Innodb所占用的空間更少,但是歸檔引擎只能進行查詢操作,不能進行寫操作

4. 使用分區表的主要事項

  • 結合業務場景選擇分區鍵,避免跨分區查詢
  • 對分區表進行查詢最好在WHERE從句中包含分區鍵
  • 具有主鍵或唯一索引的表,主鍵或唯一索引必須是分區鍵的一部分(這也是為什么我們上面分區時去掉了主鍵登錄日志id(login_id)的原因,不然就無法按照上面的按年份進行分區,所以分區表其實更適合在MyISAM引擎中)

關于MyISAM和Innodb的索引區別

1.關于自動增長

myisam引擎的自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,他可以根據前面幾列進行排序后遞增。

innodb引擎的自動增長咧必須是索引,如果是組合索引也必須是組合索引的第一列。

2.關于主鍵

myisam允許沒有任何索引和主鍵的表存在,

myisam的索引都是保存行的地址。

innodb引擎如果沒有設定主鍵或者非空唯一索引,就會自動生成一個6字節的主鍵(用戶不可見)

innodb的數據是主索引的一部分,附加索引保存的是主索引的值。

3.關于count()函數

myisam保存有表的總行數,如果select count(*) from table;會直接取出出該值

innodb沒有保存表的總行數,如果使用select count(*) from table;就會遍歷整個表,消耗相當大,但是在加了wehre 條件后,myisam和innodb處理的方式都一樣。

4.全文索引

myisam支持 FULLTEXT類型的全文索引

innodb不支持FULLTEXT類型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。(sphinx 是一個開源軟件,提供多種語言的API接口,可以優化mysql的各種查詢)

5.delete from table

使用這條命令時,innodb不會從新建立表,而是一條一條的刪除數據,在innodb上如果要清空保存有大量數據的表,最 好不要使用這個命令。(推薦使用truncate table,不過需要用戶有drop此表的權限)

6.索引保存位置

myisam的索引以表名+.MYI文件分別保存。

innodb的索引和數據一起保存在表空間里。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • MySQL高級特性——數據表分區的概念及機制詳解
  • MySql分表、分庫、分片和分區知識深入詳解
  • MySql分表、分庫、分片和分區知識點介紹
  • MySQL分表和分區的具體實現方法
  • mysql通過Navicat分區實操講解
  • Mysql優化之Zabbix分區優化
  • MySQL分區字段列有必要再單獨建索引嗎?
  • MySQL數據庫表分區注意事項大全【推薦】
  • Mysql數據表分區技術PARTITION淺析
  • MySQL數據表分區策略及優缺點分析

標簽:洛陽 嘉峪關 甘南 安徽 葫蘆島 海口 拉薩 吐魯番

巨人網絡通訊聲明:本文標題《MySQL分區表的正確使用方法》,本文關鍵詞  MySQL,分區表,的,正確,使用方法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL分區表的正確使用方法》相關的同類信息!
  • 本頁收集關于MySQL分區表的正確使用方法的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    九色porny丨国产精品| 99re这里只有| 三上悠亚在线观看视频| 精品福利在线导航| 亚洲成人免费在线观看| 精品国产午夜福利在线观看| 少妇人妻丰满做爰xxx| 中文一区二区完整视频在线观看| 精品一区二区三区影院在线午夜| 白白色免费视频| 欧美成人一级视频| 久久99精品国产.久久久久| 香蕉视频黄色在线观看| 日韩欧美中文字幕公布| 免费成人美女在线观看.| 魔女鞋交玉足榨精调教| 精品国产乱码久久久久久夜甘婷婷| 美女视频黄久久| av男人的天堂av| 国产婷婷色一区二区三区四区| 极品少妇一区二区三区精品视频| 极品蜜桃臀肥臀-x88av| 国产精品三级在线观看| 成人免费毛片片v| 一道本成人在线| 亚洲综合一区二区| 亚洲欧美日韩偷拍| 精品免费日韩av| 日韩精品中午字幕| 韩日av一区二区| 久久久精品少妇| 亚洲日本丝袜连裤袜办公室| 91在线视频官网| 欧美中文字幕不卡| 日韩精品电影在线观看| 亚洲国产日韩一区无码精品久久久| 国产日产欧美一区| www.亚洲激情.com| 5566中文字幕一区二区电影| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产三级av在线播放| 国产精品久久久久aaaa樱花| 91丨九色porny丨蝌蚪| 91精品国产综合久久国产大片| 奇米色一区二区| 亚洲人做受高潮| 一区二区三区四区在线播放| 少妇饥渴放荡91麻豆| 日本一区二区在线不卡| 性高潮久久久久久| 久久亚洲私人国产精品va媚药| 成人影视亚洲图片在线| 欧美日韩国产片| 紧缚捆绑精品一区二区| 在线观看中文字幕不卡| 日本中文一区二区三区| 亚洲女人久久久| 性做久久久久久| 国产三级黄色片| 亚洲综合免费观看高清完整版| 熟女俱乐部一区二区视频在线| 国产精品久久久久久久久免费樱桃 | 91国产成人在线| 欧美aaaaa成人免费观看视频| 久久久久久久麻豆| 亚洲国产乱码最新视频| аⅴ天堂中文在线网| 一区二区三区四区蜜桃| 亚洲精品午夜视频| 亚洲精选在线视频| 精品人妻中文无码av在线 | 99久久国产综合色|国产精品| 日韩视频在线永久播放| 成人免费视频网站在线观看| 欧美一区二区国产| 成人aa视频在线观看| 欧美不卡一区二区三区| 成人h动漫精品| 免费的av网站| 中文字幕不卡在线| 国产又爽又黄无码无遮挡在线观看| 国产精品成人一区二区艾草 | 最好看的中文字幕| 久久久久久电影| 精品熟女一区二区三区| 国产精品久久久久久久第一福利| 三级男人添奶爽爽爽视频| 亚洲丝袜美腿综合| 国产毛片欧美毛片久久久| 亚洲午夜精品一区二区三区他趣| 欧美乱大交做爰xxxⅹ小说| 日产欧产美韩系列久久99| 91精品办公室少妇高潮对白| 精品无码三级在线观看视频| 欧美日韩一卡二卡三卡| 成人午夜激情在线| 久久婷婷国产综合国色天香| 18深夜在线观看免费视频| 国产精品成人免费| 五月天婷婷丁香网| 美女脱光内衣内裤视频久久影院| 欧美精选午夜久久久乱码6080| av高清久久久| 中文字幕欧美日本乱码一线二线| av在线网站观看| 天天免费综合色| 欧美精品第一页| 91农村精品一区二区在线| 国产精品美女久久久久久久久久久| 精品成人av一区二区三区| 偷拍亚洲欧洲综合| 欧美日本国产一区| 91一区二区在线| 亚洲视频一二区| 国产成人自拍网站| 国产不卡视频在线观看| 久久久www免费人成精品| 四虎永久免费影院| 免费成人在线影院| 欧美成人精品1314www| 激情综合丁香五月| 日本视频一区二区三区| 日韩欧美一级在线播放| av2014天堂网| 午夜伊人狠狠久久| 制服丝袜中文字幕亚洲| 国产成人精品综合久久久久99| 亚洲精品第一国产综合野| 色成人在线视频| 91麻豆产精品久久久久久| 亚洲欧美日韩一区二区 | 国产精品全国免费观看高清 | 国产精品影视在线| 欧美极品aⅴ影院| 黑鬼狂亚洲人videos| 99久久久久久| 一区二区三区在线观看国产| 欧美在线看片a免费观看| 性生活在线视频| 性感美女极品91精品| 欧美一区二区三区日韩| 91中文字幕永久在线| 国产在线视频一区二区三区| 国产色产综合色产在线视频| 99re6热在线精品视频| 成人午夜电影小说| 亚洲伦理在线精品| 精品视频123区在线观看| 国产精品久久久久久亚洲av| 日韩制服丝袜先锋影音| 亚洲精品一区二区三区影院| 国产精品理论在线| jvid福利写真一区二区三区| 亚洲综合免费观看高清完整版在线 | 国产欧美精品国产国产专区 | 亚洲色图视频免费播放| 欧美午夜精品电影| 91精品小视频| 国产最新精品精品你懂的| 亚洲欧洲三级电影| 91.com视频| 亚洲第一综合网| 成人午夜伦理影院| 亚欧色一区w666天堂| 久久久久久久免费视频了| 三级影片在线看| 又色又爽又黄18网站| 蜜臀a∨国产成人精品| 欧美激情一区二区三区蜜桃视频| 色婷婷激情综合| 中文字幕影片免费在线观看| 激情综合色综合久久| 日韩理论在线观看| 日韩一区二区在线播放| 一本一本久久a久久| 熟妇女人妻丰满少妇中文字幕| 免费在线观看一区二区三区| 欧美国产国产综合| 欧美日韩一卡二卡| 麻豆视频免费在线播放| 性色av浪潮av| 精品一区二区在线播放| 亚洲精品第一国产综合野| 欧美精品一区二区不卡| 91福利国产精品| 中文字幕成人动漫| 91美女片黄在线| 国产综合成人久久大片91| 亚洲精品videosex极品| 2024国产精品| 欧美在线观看一二区| 人妻熟人中文字幕一区二区| 波多野吉衣在线视频| 寂寞少妇一区二区三区| 亚洲国产日韩综合久久精品| 国产女人aaa级久久久级| 91精品国产综合久久福利| 亚洲av鲁丝一区二区三区| 中文字幕免费高清| 久久久久亚洲av成人网人人软件|