电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL 表空間碎片的概念及相關問題解決

瀏覽:9日期:2023-10-03 14:44:00
背景

經常使用 MySQL 的話,會發現 MySQL 數據文件的磁盤空間一般會不停的增長,而且有時候刪了數據或者插入一批數據的時候,磁盤空間有時候還會毫無變化。引發這個其妙現象的就是 MySQL 的表空間碎片。

什么是表空間碎片?

表空間碎片指的是表空間中存在碎片,形象一點來比喻的話,就像是一張 A4 紙,“表空間碎片”就像是把這張 A4 紙撕碎,再重新拼起來,各個碎片之間都會有一些縫隙存在,這些縫隙就是“表空間碎片”。重新拼起來的碎片實際上會比完整的 A4 紙大上一圈,這也代表著表空間容易引發的問題:空間浪費。

對于背景中描述的現象,可以用一張圖來進行解釋:

MySQL 表空間碎片的概念及相關問題解決

圖中的數字代表真實的數據行,圓角矩形代表一個表的表空間。從左往右,第一次操作是刪除數據,由于 MySQL 在設計上是不會主動釋放空間的,因此當表中的數據行被刪除時,雖然數據被“刪除”了,但是實際上這部分空間是沒有釋放的,依舊會被 Table A 占用,因此也就出現了這樣子的情景:刪除了日志表的很多數據,但是 MySQL 的磁盤空間并沒有降低。

PS:這種不釋放空間的設計多半和惰性刪除有關,早期設計數據庫時,使用的 IO 設備一般是機械盤,讀寫性能比 SSD 差很多,所以刪除操作一般不會直接觸發磁盤上的數據刪除。

可以看到數據刪除之后,原本連續的空間中出現了兩個空白的區域,這種一般就叫做表空間空洞,空洞太多了就叫做表空間碎片化(對應的是表空間連續)。這部分的空間雖然不會釋放,但是會被標記為可重復利用,參考最右邊的表空間示意圖(第三個圓角矩形),當新插入數據的時候新數據會重新寫入到表空間空洞中,這也代表著:在大規模刪除過數據的表上,寫入數據時,表空間可能不會明顯增長或者不會增長。

實際上產生表空間空洞的操作并不只有 delete,update 也會引起這個問題,比如在 varchar 這種變長的字符型列中修改數據,改短一些的時候就會出現非常小的空洞,改長的話就有可能會因為空間不足導致把數據行的一些數據遷移到其他地方去。

怎么查看表空間碎片

MySQL 的系統表記錄了表空間的使用情況,可以用如下查詢檢查:

SELECT CONCAT(table_schema,’.’,table_name) AS ’table_name’,table_rows AS ’Number of Rows’,CONCAT(ROUND(data_length/(1024*1024),2),’ M’) AS ’data_size’,CONCAT(ROUND(index_length/(1024*1024),2),’ M’) AS ’index_size’ ,CONCAT(ROUND(data_free/(1024*1024),2),’ M’) AS’data_free’,CONCAT(ROUND(data_free/data_length,2),’ %’) AS ’data_free_pct’,ENGINE as ’engine’FROM information_schema.TABLESWHERE table_schema = ’tablename’ ORDER by data_free desc;

data_free 指表空間碎片的總空間大小,data_free_pct 指這個表的碎片百分比,效果如下:

mysql> SELECT CONCAT(table_schema,’.’,table_name) AS ’table_name’, -> table_rows AS ’Number of Rows’, -> CONCAT(ROUND(data_length/(1024*1024),2),’ M’) AS ’data_size’, -> CONCAT(ROUND(index_length/(1024*1024),2),’ M’) AS ’index_size’ , -> CONCAT(ROUND(data_free/(1024*1024),2),’ M’) AS’data_free’, -> CONCAT(ROUND(data_free/data_length,2),’ %’) AS ’data_free_pct’, -> ENGINE as ’engine’ -> FROM information_schema.TABLES -> WHERE table_schema = ’sbtest’ -> ORDER by data_free desc;+----------------+----------------+-----------+------------+-----------+---------------+--------+| table_name | Number of Rows | data_size | index_size | data_free | data_free_pct | engine |+----------------+----------------+-----------+------------+-----------+---------------+--------+| sbtest.sbtest5 | 0 | 0.02 M | 0.00 M | 44.00 M | 2816.00 % | InnoDB || sbtest.sbtest4 | 986400 | 214.70 M | 15.52 M | 4.00 M | 0.02 %| InnoDB || sbtest.sbtest3 | 986400 | 214.70 M | 15.52 M | 4.00 M | 0.02 %| InnoDB || sbtest.sbtest2 | 986400 | 214.70 M | 15.52 M | 4.00 M | 0.02 %| InnoDB || sbtest.sbtest1 | 987400 | 199.70 M | 15.52 M | 4.00 M | 0.02 %| InnoDB |+----------------+----------------+-----------+------------+-----------+---------------+--------+5 rows in set (0.00 sec)

第一行數據是測試用的數據,表中的所有數據都被刪掉了,因此計算出來的 data_free_pct 超過了 100%。

怎么解決表空間碎片問題

目前,能夠回收表空間的辦法僅有一個,就是重建表,手段包括但不限于 optimize,alter table 等。alter table 的有些操作只能靠 rebuild 表來完成,所以有時候對大表進行一些維護操作之后,也會看到磁盤空間使用率下降,這就是回收了表空間碎片騰出來的那一部分空間。

從一般經驗來看,表空間碎片的回收操作不建議經常執行,每個月一次就足夠了,因為 rebuild 表對服務器的資源影響會比較大,且會影響這個表的寫入操作。碎片率(data_free_pct)低于 20% 的時候也不用特別在意,除非磁盤空間非常緊張,且日志基本被清空。

對于回收空間的問題

對一些日志表,或者是有區域性特征的表,建議使用 MySQL 的分區表來管理,需要清理一批數據的時候,可以用 partition truncate 的方式進行清理,磁盤空間也能直接釋放掉。

以上就是MySQL 表空間碎片的概念及相關問題解決的詳細內容,更多關于MySQL 表空間碎片的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 威客电竞(vk·game)·电子竞技赛事官网 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 翰墨AI智能写作助手官网_人工智能问答在线AI写作免费一键生成 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 钢结构-钢结构厂房-钢结构工程[江苏海逵钢构厂] | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 浙江上沪阀门有限公司 | 广西正涛环保工程有限公司【官网】 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 太平洋亲子网_健康育儿 品质生活 | 云南成人高考_云南成考网| 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 纸箱网 -纸箱机械|设备|包装纸盒|包装印刷行业门户网站 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 陕西鹏展科技有限公司|