日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 临时表增加主键_MySQL之重建表

發(fā)布時(shí)間:2024/1/23 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 临时表增加主键_MySQL之重建表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

//MySQL之重建表//

? ? 在MySQL中,如果我們對大表頻繁進(jìn)行insert和delete操作,那么時(shí)間一長,這個(gè)表中會出現(xiàn)很多"空洞",也就是表碎片。

碎片產(chǎn)生的原因是insert隨機(jī)值作為主鍵id,會產(chǎn)生很多數(shù)據(jù)頁分裂操作;而delete掉一些排列有序的主鍵值,這些被delete的空間不會直接釋放,而是僅僅進(jìn)行delete的標(biāo)記,這些空間如果不能被利用,那就會變成"空洞"。

? ? ? 在這種情況下,往往需要對表進(jìn)行重建,從而釋放這些空余的空間,讓數(shù)據(jù)變得"緊湊些",如下:

?這個(gè)重建表的過程,在MySQL5.5之前,它的執(zhí)行邏輯是下面這樣的:

1、假設(shè)原表是A,新建一個(gè)表table B,和表A的表結(jié)構(gòu)保持一致

2、按照主鍵順序,將表A的數(shù)據(jù)一行一行的讀出來,插入到表B里面

3、交換表A和表B的名稱

當(dāng)我們執(zhí)行alter table A engine=Innodb的時(shí)候,就會執(zhí)行我們上述描述的三個(gè)動作。

在MySQL5.6及以后的版本里面,引入了Online DDL的方法,Online DDL的引入,使得上面的過程有了一點(diǎn)點(diǎn)不同,當(dāng)執(zhí)行alter table A engine=Innodb的時(shí)候,MySQL的內(nèi)部動作如下:

1、建立臨時(shí)文件file A,掃描表A主鍵的所有數(shù)據(jù)頁,注意,這里不是臨時(shí)表,而是臨時(shí)文件;

2、用數(shù)據(jù)頁中表A的記錄生成B+樹,然后存儲到臨時(shí)文件中去

3、在生成臨時(shí)文件的過程中,使用另一個(gè)log文件,將對表A的所有DML操作,記錄到log文件中,改文件大小由參數(shù)控制:

mysql>?show?variables?like?"%online%";
+----------------------------------+-----------+
|?Variable_name????????????????????|?Value?????|
+----------------------------------+-----------+
|?innodb_online_alter_log_max_size?|?134217728?|
+----------------------------------+-----------+
1?row?in?set,?1?warning?(0.01?sec)

4、臨時(shí)文件file A生成之后,將log中對表A的操作應(yīng)用到臨時(shí)文件中,

5、用臨時(shí)文件替換表A的數(shù)據(jù)文件

這個(gè)重建的過程中,允許對表A做增刪改查的操作,所以稱之為Online DDL。

這里需要注意一點(diǎn),因?yàn)镺nline DDL需要在DDL的過程中支持表的增刪改查操作,所以O(shè)nline DDL一開始會獲取MDL寫鎖,但是在數(shù)據(jù)文件開始拷貝之前,就退化成MDL讀鎖了。

現(xiàn)在我們來說下第一點(diǎn)里面強(qiáng)調(diào)的臨時(shí)文件file A.

在MySQL5.5之前,我們使用臨時(shí)表作為重建的中間介質(zhì),在MySQL5.6之后,我們使用臨時(shí)文件作為重建的中間介質(zhì),這里說說這個(gè)臨時(shí)表和臨時(shí)文件的區(qū)別。

臨時(shí)表是創(chuàng)建在server層面的,臨時(shí)文件是創(chuàng)建在innodb層面的,所以O(shè)nline DDL的整個(gè)過程都是在Innodb內(nèi)部完成的,這種方法也稱之為"inplace",相對應(yīng)的,需要借助server層面臨時(shí)表的過程,稱之為"Copy"。

我們在閱讀Online DDL一節(jié)的官方文檔的時(shí)候,看到的copy和inplace也就是這個(gè)意思。詳情可參見官方文檔:

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl.html

幾個(gè)小問題:

1、假設(shè)我們有一個(gè)1TB的表,磁盤只有1.2TB,那么還可以做inplace的DDL呢?

答案:不可以,因?yàn)閕nplace方案中的臨時(shí)文件也要占用一定的空間。

2、inplace方案進(jìn)行的表重建操作,都是Online DDL么?

答案:不是,有些操作是inplace的,也就是在innodb層面進(jìn)行的,但是卻不是online的,例如增加全文索引的操作,這個(gè)操作是inplace的,但是會阻塞增刪改查操作,因此不是Online DDL,只能說:Online DDL一定是inplace的,但是inplace方案進(jìn)行的操作,不一定是Online的。

3、加入某個(gè)表的大小是1TB,進(jìn)行alter table A engine=Innodb之后,表的空間沒有縮小,反而增大了一點(diǎn),這是為什么?

答案:可能是因?yàn)楸碇皠倓傔M(jìn)行過一次alter table的操作,而且表上面的并發(fā)增刪改比較多,在進(jìn)行alter table的過程中,這些操作都寫進(jìn)了log中,從而導(dǎo)致表的實(shí)際大小增加。

有幫助的話還希望點(diǎn)下再看哈

總結(jié)

以上是生活随笔為你收集整理的mysql 临时表增加主键_MySQL之重建表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www日本xxx | av色站| 91麻豆免费看 | 日韩欧美专区 | 午夜成年视频 | 胸网站 | 香蕉久久夜色 | 色综合狠狠操 | 国产一区二区三区四区五区在线 | 国产精品久久久久久久久免费桃花 | 在线观看一区二区视频 | 野花av| 日韩伊人久久 | 国产一级一片免费播放 | 国产二区三区 | 日日干夜夜拍 | 在线观看日韩精品 | 91视频在线看 | 国产黄大片在线观看画质优化 | 极品白嫩少妇无套内谢 | 国产主播福利在线 | 国产剧情在线一区 | 午夜91 | 成人免费毛片高清视频 | 精品人妻一区二区色欲产成人 | 一本久久久 | 综合激情av | 久久精品国产亚洲av香蕉 | 日日夜夜人人 | av导航网 | 草在线 | 国产精品815.cc红桃 | 啦啦啦视频在线观看 | 中文字幕av无码一区二区三区 | 日本三级中文字幕在线观看 | 日韩图片一区 | 美女视频黄频视频大全 | 伊人色区 | 精品人妻一区二区免费视频 | 97视频在线观看免费高清完整版在线观看 | 日本黄色三级视频 | 国产午夜精品久久久久久久 | 中文字幕影院 | 亚洲人屁股眼子交1 | 国产成人精品久久 | 女性裸体视频网站 | 小柔的裸露日记h | 成人h视频 | 红桃一区二区三区 | 大奶子在线观看 | 美女张开双腿让男人捅 | 超碰98在线观看 | 国产国产乱老熟女视频网站97 | 综合色综合| 日本黄网站 | 黄频在线播放 | 春宵av | 少妇人妻偷人精品视频蜜桃 | 亚洲老妇色熟女老太 | 裸体按摩www性xxxcom | 不卡成人 | 男女作爱免费网站 | 色人阁婷婷 | 亚洲美女视频在线观看 | 久久久久久久久久影院 | 成人免费小视频 | 伦理片中文字幕 | 国产精品久久久午夜夜伦鲁鲁 | 两性视频久久 | 欧美一区二区激情 | 久久亚洲AV成人无码一二三 | 久久久久亚洲av成人无码电影 | av中文字幕亚洲 | 91麻豆国产在线 | 黄色网址在线视频 | 久久夜色精品国产欧美乱 | 人妻 日韩精品 中文字幕 | 免费激情片 | 百合sm惩罚室羞辱调教 | 深夜视频在线免费观看 | 国产一区二区三区视频在线观看 | 三级免费 | 亚洲欧洲日本国产 | 免费色网站 | 欧美另类videos | 欧美日韩中文国产一区发布 | 成人福利小视频 | 黄色三级av | 色吧在线视频 | 日韩av手机在线 | 日韩一区二区三区在线视频 | av黄页| 国产成人短视频 | 日韩欧美精品久久 | 吊视频一区二区三区 | 天天综合在线观看 | 中文字幕一区二区三区精品 | 成人影视网址 | 久久久久亚洲精品系列色欲 |