您好,登錄后才能下訂單哦!
本篇文章為大家展示了mysql中怎么實(shí)現(xiàn)range分區(qū),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
一,如何啟動(dòng)mysqld?
本人把mysql安裝在環(huán)境下,安裝的主目錄homedir是"c:\Program Files
\MySQL\MySQL Server 5.1\",啟動(dòng)方法非常簡(jiǎn)單:首先進(jìn)入cmd命令行窗口,如下圖:
執(zhí)行如下命令:cd c:\Program Files\MySQL\MySQL Server 5.1\,進(jìn)入mysql安裝目錄,
可以看到bin目錄,該目錄是存放mysql的各種可執(zhí)行文件,cd bin,進(jìn)入該目錄,
找到mysqld.exe的可執(zhí)行文件,執(zhí)行mysqld,即啟動(dòng)mysqld,如下圖:
www.2cto.com
此時(shí),打開任務(wù)管理器 - 》進(jìn)程,可以看到mysqld.exe,表示啟動(dòng)成功。
二,如何關(guān)閉mysqld?
運(yùn)行cmd,將路徑切換到:c:\Program Files\MySQL\MySQL Server 5.1\bin下,用命令
mysqladmin -u root -p shutdown
如下圖所示:
三,innodb_file_per_table設(shè)置
mysql innodb 存儲(chǔ)引擎對(duì)表空間的管理在默認(rèn)情況下是使用共享表空間,
即所有表的索引和數(shù)據(jù)均放在一個(gè)以ibdata1的文件中,我們可以執(zhí)行下面的命令查看:
可以看到對(duì)應(yīng)的Value: OFF,下面我們?cè)谂渲梦募y.ini增加下面一行:
#tenfy: 新添加的參數(shù)
innodb_file_per_table=1
www.2cto.com
然后,重新啟動(dòng)mysqld,此時(shí),可以看到:
那么,你也許會(huì)問,之前在innodb_file_per_table=0的時(shí)候已經(jīng)創(chuàng)建的表,
此時(shí)還是繼續(xù)使用共享表空間嗎?是的,如果我們不對(duì)表進(jìn)行修改,之前的可以繼續(xù)使用,但
將共享表空間修改成獨(dú)立表空間,除了修改innodb_file_per_table參數(shù)外,
我們需要修改所有innodb的表都運(yùn)行如下:
alter table table_name engine=innodb; (tenfy:注意紅色部分必須添加,
否則無法生效),一旦執(zhí)行完成后,我們可以在data的mytest1目錄下,看到根據(jù)各個(gè)分區(qū)
生成的各個(gè).ibd后綴的文件,這些文件就是獨(dú)立表空間文件,每個(gè)分區(qū)對(duì)應(yīng)一個(gè)。
(關(guān)于分區(qū)我們將在下面講解)
四,mysql分區(qū)概述
分區(qū)功能并不是在存儲(chǔ)引擎層完成的,因此除了innodb支持分區(qū)外,MyISAM,NDB
等均支持分區(qū)功能,而CSV,F(xiàn)EDERATED,MERGE則不支持分區(qū)功能。而MySQL在5.1版本時(shí)
添加了對(duì)分區(qū)功能的支持。
分區(qū)是將一個(gè)表或者索引物分解成多個(gè)更小的,更可管理的部分,而對(duì)用戶訪問db的應(yīng)用來說,
從邏輯上看,只有一個(gè)表或者一個(gè)索引(這里跟分庫分表的訪問不一樣),但在物理上這個(gè)表或者
索引可能是由許多個(gè)物理分區(qū)組成的,每個(gè)分區(qū)都是一個(gè)獨(dú)立的對(duì)象,可以進(jìn)行獨(dú)立處理。
www.2cto.com
那么怎么判斷當(dāng)前是否啟用了分區(qū)功能呢?可以執(zhí)行如下命令進(jìn)行查看:
或者:
當(dāng)前MySQL支持以下幾種分區(qū):
1,RANGE分區(qū):顧名思義,區(qū)間分區(qū),行數(shù)據(jù)基于一個(gè)給定連續(xù)區(qū)間的列值放入分區(qū)。
2,LIST分區(qū):列表分區(qū),與RANGE分區(qū)類似,只是LIST分區(qū)面向的是離散可列舉的值。
3,HASH分區(qū):根據(jù)用戶自定義的表達(dá)式的返回值來進(jìn)行分區(qū),返回值不能是負(fù)數(shù)。
4,KEY分區(qū):根據(jù)MySQL數(shù)據(jù)庫提供的哈希函數(shù)進(jìn)行分區(qū)。
但是不論什么類型的分區(qū),必須注意以下兩個(gè)問題:
1,如果表中存在primary key 或者unique key時(shí),分區(qū)的列必須是primary key或者
unique key的一個(gè)組成部分,也就是說,分區(qū)函數(shù)的列只能從pk或者uk這些key中取子集。 www.2cto.com
如下:
表par_tb1有唯一key,他們對(duì)應(yīng)的列是col1,col2。而此時(shí)進(jìn)行分區(qū)的列卻是col3,
因此出現(xiàn)1503錯(cuò)誤,此時(shí)我們把col3加入到unique key或者用col1或者col2進(jìn)行分區(qū)均
沒問題:
2,如果表中不存在任何的primary key或者unique key,則可以指定任何一個(gè)列作為分區(qū)列。
五,RANGE分區(qū)。
RANGE分區(qū)是最常用的一種分區(qū)類型,它的特點(diǎn)主要是按照某個(gè)列連續(xù)的值進(jìn)行分區(qū),
因此在分區(qū)中常常使用values less than (xxx),下面我們以具體的例子來說明。
首先我們創(chuàng)建一個(gè)表,名字叫:range_par_tbl,有一個(gè)int類型的id字段,當(dāng)id小于10的
時(shí)候,插入第一個(gè)分區(qū),當(dāng)id小于20的時(shí)候插入第二分區(qū)。如下:
此時(shí),我們查看對(duì)應(yīng)的分區(qū)表空間文件(注意:因?yàn)槲覀冎霸O(shè)置了innodb_file_per_table=1),
此時(shí)啟用分區(qū)后,表已經(jīng)由建立分區(qū)時(shí)的各個(gè)分區(qū)ibd文件組成了,由于我們分了兩個(gè)區(qū),
因此可以看到對(duì)應(yīng)的兩個(gè)文件: www.2cto.com
上述內(nèi)容就是mysql中怎么實(shí)現(xiàn)range分區(qū),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。