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

首頁 > 數據庫 > MySQL > 正文

MySQL優化之分區表

2024-07-24 12:44:42
字體:
來源:轉載
供稿:網友

當數據庫數據量漲到一定數量時,性能就成為我們不能不關注的問題,如何優化呢? 常用的方式不外乎那么幾種:

  1、分表,即把一個很大的表達數據分到幾個表中,這樣每個表數據都不多。

    優點:提高并發量,減小鎖的粒度
    缺點:代碼維護成本高,相關sql都需要改動

  2、分區,所有的數據還在一個表中,但物理存儲數據根據一定的規則存放在不同的文件中,文件也可以放到另外磁盤上

    優點:代碼維護量小,基本不用改動,提高IO吞吐量
    缺點:表的并發程度沒有增加

  3、拆分業務,這個本質還是分表。

    優點:長期支持更好
    缺點:代碼邏輯重構,工作量很大

  當然,每種情況都有合適的應用場景,需要根據具體業務具體選擇。由于分表和拆分業務和mysql本身關系不大屬于業務層面,我們只說和數據庫關系最緊密的方式:表分區。不過使用表分區有個前提就是你的數據庫必須支持。那么,怎么知道我的數據庫是否支持表分區呢 ? 請執行下面命令  

復制代碼 代碼如下:

show plugins;  ---在mysql控制臺中執行

據說5.4一下的版本是另外一個命令,不過我沒有測試

復制代碼 代碼如下:

 show variables like '%part%';

   數據庫的表分區一般有兩種方式:縱向和橫向。縱向就是把表中不同字段分到不同數據文件中。橫向是把表中前一部分數據放到一個文件中,另一部分數據放到一個文件中。mysql只支持后后一種方式,橫向拆分。

1、創建分區表

   如果要使用表的分區優勢,不但要數據庫版本支持分區,關鍵要建分區表,這個表和普通表不一樣,并且必須建表的時候就要指定分區,否則無法把普通表改成分區表。那么,如果創建一個分區表呢? 其他很簡單,請看下面建表語句

CREATE TABLE `T_part` ( `f_id` INT DEFAULT NULL, `f_name` VARCHAR (20) DEFAULT NULL, PRIMARY KEY (`f_id`)) ENGINE = myisam DEFAULT CHARSET = utf8 PARTITION BY RANGE (f_id)( -----指定分區方式 PARTITION p0 VALUES less THAN (10),-- 分了兩個區 PARTITION p1 VALUES less THAN (20))

上面語句建了一個“T_part”表,有兩個字段f_id和f_name,并且根據RANGE方式把表分成兩個區p0、p1,當f_id小于10放入p0分區,當f_id大于0小于20放入分區p1. 那么當f_id大于20的數據放入哪個分區呢? 你猜對了,insert語句會報錯。

  看到了吧,創建分區表就這么簡單!當然,你隨時可以添加刪除分區,不過要注意,刪除分區的時候會把當前分區下所有數據都刪除。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清新县| 双鸭山市| 阜城县| 青冈县| 惠州市| 荣昌县| 房产| 东平县| 崇信县| 大埔区| 囊谦县| 家居| 顺平县| 泸溪县| 亚东县| 榆社县| 鱼台县| 宜春市| 惠安县| 贵州省| 新巴尔虎左旗| 中宁县| 庄河市| 略阳县| 射洪县| 昭苏县| 二手房| 湖口县| 永年县| 潞城市| 拉孜县| 阜城县| 五华县| 宜城市| 平遥县| 陆丰市| 滦南县| 延安市| 翁牛特旗| 探索| 霸州市|