国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL性能調優之分區表的知識點有什么

2024-07-24 12:33:06
字體:
來源:轉載
供稿:網友
  對于用戶而言,分區表是一個獨立的邏輯表,但是底層是由多個物理子表組成。分區表對于用戶而言是一個完全封裝底層實現的黑盒子,對用戶而言是透明的,從文件系統中可以看到多個使用#分隔命名的表文件。
  mysql在創建表時使用partition by子句定義每個分區存放的數據,在執行查詢的時候,優化器會根據分區定義過濾那些沒有我們需要數據的分區,這樣查詢就無須掃描所有分區。
  分區的主要目的是將數據安好一個較粗的力度分在不同的表中,這樣可以將相關的數據存放在一起。
  接下來,我將從以下6個方面來談談分區表,分別是分區表的應用場景、分區表的限制、分區表的原理、分區表的類型、如何使用分區表、在使用分區表的時候需要注意的問題。
 
  一、分區表的應用場景
  1、表非常大以至于無法全部都放在內存中,或者只在表的最后部分有熱點數據,其他均是歷史數據。
 
  2、分區表的數據更容易維護
 
  (1)批量刪除大量數據可以使用清除整個分區的方式
 
  (2)對一個獨立分區進行優化、檢查、修復等操作
 
  3、分區表的數據可以分布在不同的物理設備上,從而高效地利用多個硬件設備
 
  4、可以使用分區表來避免某些特殊的瓶頸
 
  (1)innodb的單個索引的互斥訪問
 
  (2)ext3文件系統的inode鎖競爭
 
  5、可以備份和恢復獨立的分區
 
  二、 分區表的原理
  分區表由多個相關的底層表實現,這個底層表也是由句柄對象標識,我們可以直接訪問各個分區。存儲引擎管理分區的各個底層表和管理普通表一樣(所有的底層表都必須使用相同的存儲引擎),分區表的索引知識在各個底層表上各自加上一個完全相同的索引。從存儲引擎的角度來看,底層表和普通表沒有任何不同,存儲引擎也無須知道這是一個普通表還是一個分區表的一部分。分區表的操作按照以下的操作邏輯進行:
 
  1、select查詢
 
  當查詢一個分區表的時候,分區層先打開并鎖住所有的底層表,優化器先判斷是否可以過濾部分分區,然后再調用對應的存儲引擎接口訪問各個分區的數據
 
  2、insert操作
 
  當寫入一條記錄的時候,分區層先打開并鎖住所有的底層表,然后確定哪個分區接受這條記錄,再將記錄寫入對應底層表。
 
  3、 update操作
 
  當更新一條記錄時,分區層先打開并鎖住所有的底層表,mysql先確定需要更新的記錄再哪個分區,然后取出數據并更新,再判斷更新后的數據應該再哪個分區,最后對底層表進行寫入操作,并對源數據所在的底層表進行刪除操作。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 根河市| 封开县| 宜昌市| 桂平市| 界首市| 忻州市| 微山县| 安岳县| 绥芬河市| 定陶县| 阳新县| 廉江市| 溆浦县| 友谊县| 武安市| 盐池县| 玉田县| 弋阳县| 原阳县| 汾西县| 德州市| 宾川县| 永康市| 鄢陵县| 永泰县| 东明县| 浦城县| 东乌珠穆沁旗| 贡嘎县| 乌鲁木齐市| 岳池县| 宜宾县| 芦溪县| 西乡县| 德钦县| 炉霍县| 沿河| 尚义县| 新疆| 绥中县| 连州市|