1. 程式人生 > >MySQL 指定各分割槽路徑

MySQL 指定各分割槽路徑

介紹

可以針對分割槽表的每個分割槽指定各自的儲存路徑,對於innodb儲存引擎的表只能指定資料路徑,因為資料和索引是儲存在一個檔案當中,對於MYISAM儲存引擎可以分別指定資料檔案和索引檔案,一般也只有RANGE、LIST分割槽、sub子分割槽才有可能需要單獨指定各個分割槽的路徑,HASH和KEY分割槽的所有分割槽的路徑都是一樣。RANGE分割槽指定路徑和LIST分割槽是一樣的,這裡就拿LIST分割槽來做講解。

一、MYISAM儲存引擎

CREATE TABLE th (id INT, adate DATE)
engine='MyISAM'
PARTITION BY LIST(YEAR(adate))
(
  PARTITION p1999 VALUES IN (1995, 1999, 2003)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx',
  PARTITION p2000 VALUES IN (1996, 2000, 2004)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx',
  PARTITION p2001 VALUES IN (1997, 2001, 2005)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx',
  PARTITION p2002 VALUES IN (1998, 2002, 2006)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx'
);

注意:MYISAM儲存引擎的資料檔案和索引檔案是分庫儲存所以可以為資料檔案和索引檔案定義各自的路徑,INNODB儲存引擎只能定義資料路徑。

二、INNODB儲存引擎

CREATE TABLE thex (id INT, adate DATE)
engine='InnoDB'
PARTITION BY LIST(YEAR(adate))
(
  PARTITION p1999 VALUES IN (1995, 1999, 2003)
    DATA DIRECTORY = '/data/data',
    
  PARTITION p2000 VALUES IN (1996, 2000, 2004)
    DATA DIRECTORY = '/data/data',
   
  PARTITION p2001 VALUES IN (1997, 2001, 2005)
    DATA DIRECTORY = '/data/data',
    
  PARTITION p2002 VALUES IN (1998, 2002, 2006)
    DATA DIRECTORY = '/data/data'
  
);

指定路徑之後在原來的路徑中innodb生成了4個指向資料儲存的路徑檔案,myisam生成了一個th.par檔案指明該表是分割槽表,同時資料檔案和索引檔案指向了實際的儲存路徑。

三、子分割槽 

1.子分割槽

CREATE TABLE tb_sub_dir (id INT, purchased DATE)
ENGINE='MYISAM'
    PARTITION BY RANGE( YEAR(purchased) )
    SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
        PARTITION p0 VALUES LESS THAN (
1990) ( SUBPARTITION s0 DATA DIRECTORY = '/data/data_sub1' INDEX DIRECTORY = '/data/idx_sub1', SUBPARTITION s1 DATA DIRECTORY = '/data/data_sub1' INDEX DIRECTORY = '/data/idx_sub1' ), PARTITION p1 VALUES LESS THAN (2000) ( SUBPARTITION s2 DATA DIRECTORY = '/data/data_sub2' INDEX DIRECTORY = '/data/idx_sub2', SUBPARTITION s3 DATA DIRECTORY = '/data/data_sub2' INDEX DIRECTORY = '/data/idx_sub2' ), PARTITION p2 VALUES LESS THAN MAXVALUE ( SUBPARTITION s4 DATA DIRECTORY = '/data/data_sub3' INDEX DIRECTORY = '/data/idx_sub3', SUBPARTITION s5 DATA DIRECTORY = '/data/data_sub3' INDEX DIRECTORY = '/data/idx_sub3' ) );

2.子分割槽再分

CREATE TABLE tb_sub_dirnew (id INT, purchased DATE)
ENGINE='MYISAM'
    PARTITION BY RANGE( YEAR(purchased) )
    SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
        PARTITION p0 VALUES LESS THAN (1990) 
        DATA DIRECTORY = '/data/data'
        INDEX DIRECTORY = '/data/idx'
        (
            SUBPARTITION s0
                DATA DIRECTORY = '/data/data_sub1'
                INDEX DIRECTORY = '/data/idx_sub1',
            SUBPARTITION s1
                DATA DIRECTORY = '/data/data_sub1'
                INDEX DIRECTORY = '/data/idx_sub1'
        ),
        PARTITION p1 VALUES LESS THAN (2000)
        DATA DIRECTORY = '/data/data'
        INDEX DIRECTORY = '/data/idx'
        (
            SUBPARTITION s2
                DATA DIRECTORY = '/data/data_sub2'
                INDEX DIRECTORY = '/data/idx_sub2',
            SUBPARTITION s3
                DATA DIRECTORY = '/data/data_sub2'
                INDEX DIRECTORY = '/data/idx_sub2'
        ),
        PARTITION p2 VALUES LESS THAN MAXVALUE
        DATA DIRECTORY = '/data/data'
        INDEX DIRECTORY = '/data/idx'
        (
            SUBPARTITION s4
                DATA DIRECTORY = '/data/data_sub3'
                INDEX DIRECTORY = '/data/idx_sub3',
            SUBPARTITION s5
                DATA DIRECTORY = '/data/data_sub3'
                INDEX DIRECTORY = '/data/idx_sub3'
        )
    );

也可以給個分割槽指定路徑後再給子分割槽指定路徑,但是這樣沒有意義,因為資料的存在都是由子分割槽決定的。

注意:

1.指定的路徑必須存在,否則分割槽無法建立成功

2.MYISAM儲存引擎的資料檔案和索引檔案是分庫儲存所以可以為資料檔案和索引檔案定義各自的路徑,INNODB儲存引擎只能定義資料路徑

分割槽系列文章: 

總結

 通過給各個分割槽指定各自的磁碟可以有效的提高讀寫效能,在條件允許的情況下是一個不錯的方法。

備註:

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關推薦

MySQL 指定分割槽路徑

介紹 可以針對分割槽表的每個分割槽指定各自的儲存路徑,對於innodb儲存引擎的表只能指定資料路徑,因為資料和索引是儲存在一個檔案當中,對於MYISAM儲存引擎可以分別指定資料檔案和索引檔案,一般也只有RANGE、LIST分割槽、sub子分割槽才有可能需要單獨指定各個分割槽的路徑,HASH和KEY分割槽

mysql指定的socket路徑改變時如何通過ODBC進行訪問?

困擾我一下午的問題,現在終於明朗了。 我們都知道,mysql安裝的時候客戶端和服務端連線的時候在預設的情況下都是通過/tmp/mysql.sock這個連結來完成的。但是由於我們為了改變資料庫的存放路徑,我們也改變了這個預設的路徑,可以通過my.cnf這個配置檔案來修改,具體的

MySQL種數據類型的長度及在開發中如何選擇

年月日 mysql image acl bin 數據類型 mes 指定 字符數 接觸MySQL這個數據庫大概快要兩年了,不過由於沒有特別深入系統的去學習,大多也是停留在一知半解的狀態。今天在工作中剛好碰到了表設計的問題,順便寫篇博客,把MySQL中數據類型和字段類型選擇這方

ubuntu下修改mysql默認data路徑

安全 onf init.d 修改 提醒 成功 ubunt 文件夾 mkdir 由於ubuntu默認的mysql路徑是在/var/lib/mysql下,很多時候我們如果沒有掛載其它分區在/var的時候,隨著網站逐漸瀏覽和添加內容,數據容量也會越來越大,自然磁盤空間也會比較吃緊

MySQL指定模糊查詢範圍 或 獲取或者查詢數據庫字段的特定幾位

length oracle 一個 中一 字段 範圍 htm 截取 模糊查詢 SUBSTR 函數 正常的: select * from sky_user WHERE name LIKE "%name%" 現在我需要匹配name的前五位 select * from sk

mysql 查詢數據庫的占用大小

orm ble con 占用 大小 查詢 div form lec select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),‘ MB‘) as data_size, concat(truncate

指定文件路徑存儲字符串

文件 ongl .com com 字符 字符串 music aid 5% %E8%AF%B7%E6%95%99%E6%9C%89%E5%85%B3CTsFaIL%E7%9A%84%E9%97%AE%E9%A2%98 http://music.baidu.com/songl

mysql 指定版本安裝

inux star evel 解決方法 如果 重要 per -i connect CentOS Mysql 指定版本安裝 1.檢查mysql rpm相關的包是否安裝(很重要!!!) rpm -qa | grep -i mysql mysql-libs-5.1.61-4.el

Yum安裝MySQL以及相關目錄路徑和修改目錄

mysqld 修改 oot my.cnf code all 數據 喜歡 clas 有些時候,為了方便,有些同學喜歡通過yum的方式安裝MySQL,沒有設置統一的文件目錄以及軟件目錄,那麽就會為後續的維護工作帶來很大的麻煩! 下面就簡單介紹一下yum安裝MySQL的步驟以及這

mysql修改數據路徑

etc highlight 文件夾 服務 roo mysql修改 stop log start 步湊: 1、關閉mysql服務 [root@localhost /]# service mysqld stop 2、移動mysql文件夾到自定義的目錄 [root@loca

Mysql時間範圍分割槽(RANGE COLUMNS方式)

開始 1、建立測試表 CREATE TABLE `t_test` ( `id` INT (11), `dates` DATETIME ); ALTER TABLE t_test ADD PRIMARY KEY (id); ALTER TABLE t_test MODIF

Linux下yum安裝MySQL yum安裝MySQL指定版本

轉載:https://blog.csdn.net/jerome_s/article/details/52883234 yum 安裝MySQL 1. 檢查安裝情況         檢視有沒有安裝過:

SpringBoot遇到的問題--釋出後指定專案訪問路徑字首

SpringBoot遇到的問題–釋出後指定專案訪問路徑字首 文章目錄 SpringBoot遇到的問題--釋出後指定專案訪問路徑字首 前言 方法 前言 之前如果我們開發專案,一般都會帶上專案名稱,如 http:

MySQL中的分割槽是什麼?為什麼要分割槽?有什麼好處?怎麼進行分割槽

本文轉載自:https://www.2cto.com/database/201805/742843.html MySQL從5.1版本開始支援分割槽功能,它允許可設定的一定邏輯,跨檔案系統分配單個表的多個部分,但是就訪問資料庫而言,邏輯上還是隻有一個表。 還是老樣子,在學習新知識之前都先帶著問

mysql--hash--key分割槽

hash分割槽 Hash分割槽主要用來確保資料在預先確定數目的分割槽中平均分佈,Hash括號內只能是整數列或返回確定整數的函式,實際上就是使用返回的整數對分割槽數取模。 要使用HASH分割槽來分割一個表,要在CREATE TABLE 語句上新增一個“PARTITION BY HASH (

Quartus II FPGA指定工程檔案路徑

實驗環境(藍色粗體字為特別注意內容) 1,環境:Windows 7 Ultimate 32 bit、QuartusII 13.0.1 win32、ModelSim SE 10.1a win32 2,參考文獻:https://zhidao.baidu.com/question/74947355

rpm包安裝的mariadb指定資料存放路徑

在預設安裝mariadb的時候,可以在/etc/my.cnf.d/server.cnf中指定資料存放的路徑:datadir=/xxx 需要初始化資料庫:mysql_install_db 存放路徑下所有檔案需要賦予許可權:chown -R mysql:mysql  /xxx 剛剛

mysql查詢班前3名成績

CREATE TABLE sc ( id INT, name VARCHAR(20), class VARCHAR(20), score INT ); INSERT INTO sc VALUES (11,

Win7 尋找 MySQL資料庫database的路徑

今天給大家演示的是如何在MySQL中尋找我們已經建立的資料庫的位置 1.直接尋找              在ProgramDate ------->  M

mysql中寫入檔案路徑或者rtf格問題

在檔案中寫入路徑,由於路徑包含字元”\”,二Mysql會忽略該字元,因此對於”C:\test\1.txt”寫入資料庫之後變成了” C:test 1.txt” ,此時並不是我們所需要的結果,因此需要進行處理,寫入時候使用”\\”替換”\”。或者使用儲存過程進行寫入資料,示例如下: 儲存過程” pr