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

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

MySQL數據表分區策略及優缺點分析

瀏覽:6日期:2023-10-03 07:52:51
目錄為什么需要分區?分區的策略分區隱患為什么需要分區?

當面對巨大的數據表的時候,至少有一件事情是確定的,表太大了以至于每次查詢的時候我們沒法做全表掃描。而這個時候也沒法使用索引,或者說索引意義不大,更不用說索引的維護代價和空間占用非常高。如果是依賴索引,會導致大量的碎片和低聚集度的數據,這會導致查詢的時候有上千次的隨機 I/O 訪問而導致宕機。這種情況下一般只會使用1-2個索引,而不會更多。這種情況下,有兩個可行的選項:查詢必須從數據表的指定的部分順序查找或者是期望的部分數據及其索引與服務器的內存匹配。

需要再次重申:在存儲空間過大時,除非索引覆蓋了整個查詢,否則二叉樹索引就無法發揮作用。服務端需要查找數據表的一整行數據,并且會在一個大空間跨度里執行隨機 I/O 操作,這會導致查詢響應時間無法接受。而維護索引(磁盤空間,I/O 操作)的代價同樣很高。

而這是分區能夠解決的問題。這其中的關鍵就是分區是索引的一個初級形式,它的負荷低并且能夠讓我們從臨近的數據中獲取結果。這種情形下,我們可以依次掃描相鄰的數據或者是將臨近的數據加載到內存進行檢索。分區之所以負荷低是因為它并沒有指針指向對應的數據行,也不需要被更新。分區并不精確地將數據按行劃分,也沒有涉及到所謂的數據結構。實際上,分區相當于對數據進行了分類。

分區的策略

對于大數據表,有兩種策略進行分區:

不使用索引:創建數據表時不增加索引,而是使用分區定位到所需要的數據行。只要你使用 WHERE 條件將查詢切分到很小的分區范圍,就已經足夠了。這個時候需要通過數學方法計算查詢的響應時間是否能夠接受。當然,這里的假設是不會將數據放到內存中,而是全部數據都從磁盤讀取。因此數據很快就會被其他查詢覆蓋,使用緩存沒什么意義。這種情況一般用于大量數據表的基數是常規的。需要注意的是,需要限制分區數在幾百。 使用索引,并且隔離熱區數據:如果除了熱區數據外,大部分數據是不使用的,則可以將熱區數據單獨的分區,這個分區算上索引都能夠加載到內存中。這個時候可以通過索引來優化性能,就像操作普通的數據表一樣。 分區隱患

兩種分區策略是基于兩個關鍵假設:在查詢的時候可以通過過濾分區縮小查找范圍,且分區自身的代價不高。然而,這兩個假設未必總是有效,下面是可能遇到的問題:

NULL 空值可能導致分區過濾失效:當分區函數可能是 NULL 時,分區工作的結果就會很奇特。它會假設第一個分區是特殊的。假設使用 PARTITION BY RANGE YEAR(order_date)這樣的分區方法,如果 order_date 這個列是 NULL 或者無效的日期都會存儲在第一個分區。假設寫了一個查詢使用了這樣的查詢條件 :WHERE order_date BETWEEN ’2021-01-01’ AND ’2021-01-31’。MySQL 實際上會檢查2個分區,一個是 YEAR 這個函數 在接收到無效輸入時可能會返回 NULL,另一個是符合條件的值可能是 NULL(存儲在第一個分區中)。這種情況對其他函數也可能,例如 TO_DAYS。如果第一個分區很大的話,就會產生問題,尤其是使用第一種不使用索引策略時。從兩個分區查找數據而不是一個分區的效果是完全意外的。為了避免這種情況,應該創造“假的”第一分區,例如 PARTITION p_nulls VALUES LESS THAN (0)。如果沒有無效數據存入數據表的話,這個第一分區將是空的,即便它也會被掃描,但是因為是空的或者數據量很少,對性能影響不大。這種情況在 MySQL 5.5以后,如果直接使用列進行分區的話就不需要處理,但是如果是使用函數的話就要這樣做。 索引與分區不匹配:假設定義了一個索引與分區條件不匹配,查詢就可能無法對分區進行過濾。假設定義了 字段 a 的索引卻使用 字段 b 進行分區。由于每個分區都會有自己的索引,針對這個索引的查詢會遍歷所有分區的索引樹。如果索引樹的非葉子節點都常駐內存查詢起來還比較快,但是也沒法避免全部索引的掃描。為了避免這種情況,應當盡量避免使用非分區的索引列,除非WHERE 條件本身能夠指定分區。看起來這樣很容易避免,實際上卻令人吃驚。例如,假設一個分區表用在第二個表查詢聯合查詢后,而聯合查詢使用的索引并不是分區的索引。則聯合查詢的每一行都會訪問和掃碼第二張表的分區。 決定使用哪個分區代價可能很高:分區實現的方式各有差異,因此實際的性能并不總是一致。特別是當遇到“這個數據行屬于哪個分區”或者“如何才能查找到與查詢條件匹配的數據行”這樣的問題時。在眾多分區的情況下來回答這樣的問題很費勁。線性搜索并不總是那么有效,結果是隨著分區數的增長代價也在上升。最為糟糕的形式是逐行插入。每次插入一行數據到分區的數據表,服務器都需要掃描一次使用哪個分區存放新的數據行。可以通過限制分區的數量來減輕這個問題,事實上,一般不建議超過100個分區。當然,對于其他分區類型,如鍵值和哈希分區則不會有這樣的限制。 打開和鎖定分區代價也可能很高:分區表帶來的一個負面效應是查詢時需要對每個分區進行打開和鎖定。而這個過程是在過濾分區前進行的。這個代價與分區類型無關,且會影響所有的操作語句。這種影響對于短數據量的查詢尤其明顯,例如只查詢一行數據時。這種缺陷可以通過批量操作替代單次來降低,例如一次插入多行,或 LOAD DATA INFILE,一次按范圍刪除數據等等。當然,限制分區的數量也是有效的。 維護操作代價可能很高:有些分區的維護是很快的,例如創建或者刪除分區。而其他操作,例如調整分區,就有點像 ALTER 對表的操作那樣了:需要循環復制數據行。例如,調整分區會創建一個臨時分區,然后將數據移入到新的分區,再刪除舊的分區。

如上所述,分區并不是完美解決方案,目前版本的 MySQL還有一些其他的約束:

所有分區必須使用相同的存儲引擎。 分區函數能夠選用的函數或表達式有一定的限制。 有些存儲引擎并不支持分區。 對于 MYISAM 數據表,無法使用 LOAD INDEX INTO CACHE。 對于 MYISAM 數據表,分區表需要更多的打開文件描述符,這意味著單個數據表的緩存入口可能對應多個文件描述符。因此基本配置限制了數據表的緩存以避免超出服務器操作系統的預處理量,而分區表可能導致實際超出這個限制。

當然,隨著 MySQL 版本的更新迭代,對分區的支持也越來越好,并且很多分區的問題都得到了修復。

以上就是MySQL數據表分區策略及優缺點分析的詳細內容,更多關于MySQL數據表分區策略及優缺點的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 商标转让-商标注册-商标查询-软著专利服务平台 - 赣江万网 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 分子蒸馏设备(短程分子蒸馏装置)_上海达丰仪器 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 铸钢件厂家-铸钢齿轮-减速机厂家-淄博凯振机械有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 |