<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        [MySQL5.1體驗]MySQL分區

        來源:懂視網 責編:小采 時間:2020-11-09 15:37:20
        文檔

        [MySQL5.1體驗]MySQL分區

        [MySQL5.1體驗]MySQL分區:作/譯者:葉金榮(Email: ),來源:http://imysql.cn 一、概述 相信有很多人經常會問同樣的一個問題:當 MySQL 的總記錄數超過了100萬后,會出現性能的大幅度下降嗎?答案是肯定的,但是性能下降的比率不一而同,要看系統的架構、應用程序、還有包 括索引、
        推薦度:
        導讀[MySQL5.1體驗]MySQL分區:作/譯者:葉金榮(Email: ),來源:http://imysql.cn 一、概述 相信有很多人經常會問同樣的一個問題:當 MySQL 的總記錄數超過了100萬后,會出現性能的大幅度下降嗎?答案是肯定的,但是性能下降的比率不一而同,要看系統的架構、應用程序、還有包 括索引、

        作/譯者:葉金榮(Email: ),來源:http://imysql.cn 一、概述 相信有很多人經常會問同樣的一個問題:當 MySQL 的總記錄數超過了100萬后,會出現性能的大幅度下降嗎?答案是肯定的,但是性能下降的比率不一而同,要看系統的架構、應用程序、還有包 括索引、

        作/譯者:葉金榮(Email: ),來源:http://imysql.cn

        一、概述

        相信有很多人經常會問同樣的一個問題:當 MySQL
        的總記錄數超過了100萬后,會出現性能的大幅度下降嗎?答案是肯定的,但是性能下降>的比率不一而同,要看系統的架構、應用程序、還有>包 括索引、服務器硬件等多種因素而定。當有網友問我這個問題的時候,我最常見的回答>就是:分表,可以根據id區間或者時間先后順序等多
        種規則來分表。分表很容易,然而由此所帶來的應用程序甚至是架構方面的改動工作卻不>容小覷,還包括將來的擴展性等。

        在以前,一種解決方案就是使用 MERGE
        類型,這是一個非常方便的做飯。架構和程序基本上不用做改動,不過,它的缺點是顯見的:

      1. 只能在相同結構的 MyISAM 表上使用
      2. 無法享受到 MyISAM 的全部功能,例如無法在 MERGE 類型上執行 FULLTEXT 搜索
      3. 它需要使用更多的文件描述符
      4. 讀取索引更慢
      5. 這個時候,MySQL 5.1 中新增的分區(Partition)功能的優勢也就很明顯了:

      6. 與單個磁盤或文件系統分區相比,可以存儲更多的數據
      7. 很容易就能刪除不用或者過時的數據
      8. 一些查詢可以得到極大的優化
      9. 涉及到 SUM()/COUNT() 等聚合函數時,可以并行進行
      10. IO吞吐量更大
      11. 分區允許可以設置為任意大小的規則,跨文件系統分配單個表的多個部分。實際上,表的不同部分在不同的位置被存儲為單獨的表。

        二、分區的類型

      12. RANGE 分區:基于屬于一個給定連續區間的列值,把多行分配給分區。參見18.2.1節,RANGE分區
      13. LIST 分區:類似于按RANGE分區,區別在于LIST分區是基于列值匹配一個離散值集合中的某個值來進行選擇。參見18.2.2節,LIST分區
      14. HASH分區:基于用戶定義的表達式的返回值來進行選擇的分區,該表達式使用將要插入到表中的這些行的列值進行計算。這個函數可以包>含MySQL中有效的、產生非負整數值的任何表達式。參見18.2.3節,HASH分區
      15. KEY
        分區:類似于按HASH分區,區別在于KEY分區只支持計算一列或多列,且MySQL服務器提供其自身的哈希函數。必須有一列或多列包含>整數值。
        參見18.2.4節,KEY分區
      16. 三、分區例子:

      17. RANGE 類型
        CREATE TABLE users (
        uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL DEFAULT '',
        email VARCHAR(30) NOT NULL DEFAULT ''
        )
        PARTITION BY RANGE (uid) (
        PARTITION p0 VALUES LESS THAN (3000000)
        DATA DIRECTORY = '/data0/data'
        INDEX DIRECTORY = '/data1/idx',

        PARTITION p1 VALUES LESS THAN (6000000)
        DATA DIRECTORY = '/data2/data'
        INDEX DIRECTORY = '/data3/idx',

        PARTITION p2 VALUES LESS THAN (9000000)
        DATA DIRECTORY = '/data4/data'
        INDEX DIRECTORY = '/data5/idx',

        PARTITION p3 VALUES LESS THAN MAXVALUE DATA DIRECTORY = '/data6/data'
        INDEX DIRECTORY = '/data7/idx'
        );

        在這里,將用戶表分成4個分區,以每300萬條記錄為界限,每個分區都有自己獨立的數據、索引文件的存放目錄,與此同時,這些目錄所在的>
        物理磁盤分區可能也都是完全獨立的,可以多大提高了磁盤IO吞吐量。

      18. LIST 類型
        CREATE TABLE category (
        cid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL DEFAULT ''
        )
        PARTITION BY LIST (cid) (
        PARTITION p0 VALUES IN (0,4,8,12)
        DATA DIRECTORY = '/data0/data'
        INDEX DIRECTORY = '/data1/idx',

        PARTITION p1 VALUES IN (1,5,9,13)
        DATA DIRECTORY = '/data2/data'
        INDEX DIRECTORY = '/data3/idx',

        PARTITION p2 VALUES IN (2,6,10,14)
        DATA DIRECTORY = '/data4/data'
        INDEX DIRECTORY = '/data5/idx',

        PARTITION p3 VALUES IN (3,7,11,15)
        DATA DIRECTORY = '/data6/data'
        INDEX DIRECTORY = '/data7/idx'
        );

        分成4個區,數據文件和索引文件單獨存放。

      19. HASH 類型
        CREATE TABLE users (
        uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL DEFAULT '',
        email VARCHAR(30) NOT NULL DEFAULT ''
        )
        PARTITION BY HASH (uid) PARTITIONS 4 (
        PARTITION p0
        DATA DIRECTORY = '/data0/data'
        INDEX DIRECTORY = '/data1/idx',

        PARTITION p1
        DATA DIRECTORY = '/data2/data'
        INDEX DIRECTORY = '/data3/idx',

        PARTITION p2
        DATA DIRECTORY = '/data4/data'
        INDEX DIRECTORY = '/data5/idx',

        PARTITION p3
        DATA DIRECTORY = '/data6/data'
        INDEX DIRECTORY = '/data7/idx'
        );

        分成4個區,數據文件和索引文件單獨存放。

      20. KEY 類型
        REATE TABLE users (
        uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL DEFAULT '',
        email VARCHAR(30) NOT NULL DEFAULT ''
        )
        PARTITION BY KEY (uid) PARTITIONS 4 (
        PARTITION p0
        DATA DIRECTORY = '/data0/data'
        INDEX DIRECTORY = '/data1/idx',

        PARTITION p1
        DATA DIRECTORY = '/data2/data'
        INDEX DIRECTORY = '/data3/idx',

        PARTITION p2
        DATA DIRECTORY = '/data4/data'
        INDEX DIRECTORY = '/data5/idx',

        PARTITION p3
        DATA DIRECTORY = '/data6/data'
        INDEX DIRECTORY = '/data7/idx'
        );

        分成4個區,數據文件和索引文件單獨存放。

      21. 子分區
        子分區是針對 RANGE/LIST 類型的分區表中每個分區的再次分割。再次分割可以是 HASH/KEY 等類型。例如:
        CREATE TABLE users (
        uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL DEFAULT '',
        email VARCHAR(30) NOT NULL DEFAULT ''
        )
        PARTITION BY RANGE (uid) SUBPARTITION BY HASH (uid % 4) SUBPARTITIONS 2(
        PARTITION p0 VALUES LESS THAN (3000000)
        DATA DIRECTORY = '/data0/data'
        INDEX DIRECTORY = '/data1/idx',

        PARTITION p1 VALUES LESS THAN (6000000)
        DATA DIRECTORY = '/data2/data'
        INDEX DIRECTORY = '/data3/idx'
        );

        對 RANGE 分區再次進行子分區劃分,子分區采用 HASH 類型。

        或者

        CREATE TABLE users (
        uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL DEFAULT '',
        email VARCHAR(30) NOT NULL DEFAULT ''
        )
        PARTITION BY RANGE (uid) SUBPARTITION BY KEY(uid) SUBPARTITIONS 2(
        PARTITION p0 VALUES LESS THAN (3000000)
        DATA DIRECTORY = '/data0/data'
        INDEX DIRECTORY = '/data1/idx',

        PARTITION p1 VALUES LESS THAN (6000000)
        DATA DIRECTORY = '/data2/data'
        INDEX DIRECTORY = '/data3/idx'
        );

        對 RANGE 分區再次進行子分區劃分,子分區采用 KEY 類型。

      22. 四、分區管理

      23. 刪除分區
        ALERT TABLE users DROP PARTITION p0;

        刪除分區 p0。

      24. 重建分區
      25. RANGE 分區重建
        ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES LESS THAN (6000000));

        將原來的 p0,p1 分區合并起來,放到新的 p0 分區中。

      26. LIST 分區重建
        ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES IN(0,1,4,5,8,9,12,13));

        將原來的 p0,p1 分區合并起來,放到新的 p0 分區中。

      27. HASH/KEY 分區重建
        ALTER TABLE users REORGANIZE PARTITION COALESCE PARTITION 2;

        用 REORGANIZE 方式重建分區的數量變成2,在這里數量只能減少不能增加。想要增加可以用 ADD PARTITION 方法。

      28. 新增分區
      29. 新增 RANGE 分區
        ALTER TABLE category ADD PARTITION (PARTITION p4 VALUES IN (16,17,18,19)
        DATA DIRECTORY = '/data8/data'
        INDEX DIRECTORY = '/data9/idx');

        新增一個RANGE分區。

      30. 新增 HASH/KEY 分區
        ALTER TABLE users ADD PARTITION PARTITIONS 8;

        將分區總數擴展到8個。

      31. 好了,本次體驗先到這里,更多詳情請看
        target="_blank">MySQL 手冊第18章。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        [MySQL5.1體驗]MySQL分區

        [MySQL5.1體驗]MySQL分區:作/譯者:葉金榮(Email: ),來源:http://imysql.cn 一、概述 相信有很多人經常會問同樣的一個問題:當 MySQL 的總記錄數超過了100萬后,會出現性能的大幅度下降嗎?答案是肯定的,但是性能下降的比率不一而同,要看系統的架構、應用程序、還有包 括索引、
        推薦度:
        標簽: 體驗 5.1 Email
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲高清免费在线观看| 亚洲成在人线电影天堂色| 特级aaaaaaaaa毛片免费视频| 最近2019中文字幕免费直播| 亚洲AV无码久久精品色欲| 久久免费线看线看| 亚洲av片劲爆在线观看| 免费看又黄又无码的网站| 亚洲精品美女久久久久| 国产一卡二卡四卡免费| 7777久久亚洲中文字幕| 最新中文字幕免费视频| 国产精品亚洲专一区二区三区| 四虎1515hm免费国产| 国产黄色片免费看| 亚洲综合日韩久久成人AV| 四虎国产精品永久免费网址| 亚洲天天做日日做天天欢毛片| 99久久99久久精品免费看蜜桃 | 久久精品成人免费网站| 亚洲酒色1314狠狠做| 精品久久久久国产免费| 亚洲av无码有乱码在线观看| 亚洲国产精品成人AV无码久久综合影院| 免费又黄又爽又猛大片午夜| 国产亚洲欧洲精品| 免费看片在线观看| 国产精品日本亚洲777| 久久精品九九亚洲精品天堂| 最近免费中文字幕高清大全| 亚洲欧美成aⅴ人在线观看| 亚洲国产成人VA在线观看| 久9这里精品免费视频| 亚洲人成77777在线观看网| 亚洲第一区精品观看| 精品无码AV无码免费专区| 亚洲国产精华液2020| 国产精品亚洲аv无码播放| 99久久这里只精品国产免费| 特级毛片免费播放| 亚洲无砖砖区免费|