非root用戶運(yùn)行MySQL,當(dāng)MySQL配置比較高時(shí),MySQL運(yùn)行中生效的參數(shù)值與配置的值不一樣,所以具體分析一下MySQL是怎么調(diào)整這些參數(shù)值的。?

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),雞西梨樹網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:雞西梨樹等地區(qū)。雞西梨樹做網(wǎng)站價(jià)格咨詢:18982081108
這篇文章的目的是為了說明在系統(tǒng)資源不夠的情況下,MySQL 是怎么調(diào)整者三個(gè)參數(shù)的。說明此文涉及到三個(gè)參數(shù)open_files_limit、?max_connections、?table_open_cache。與這三個(gè)參數(shù)相關(guān)的系統(tǒng)資源是打開文件數(shù)限制,即文件描述符(fd)限制。系統(tǒng)參數(shù)與文件描述符的關(guān)系?-?max_connection??fd?: 每一個(gè)MySQL connection ? ? ?都需要一個(gè)文件描述符;
-?table_open_cache??fd?打開一張表至少需要一個(gè) ? ? ?文件描述符,如打開MyISAM需要兩個(gè)fd?;
- 系統(tǒng)最大打開文件數(shù)可以通過?ulimit -n查看。MySQL調(diào)整參數(shù)的方式
根據(jù)配置(三個(gè)參數(shù)的配置值或默認(rèn)值)計(jì)算?request_open_files(需要的文件描述符);
2.獲取有效的系統(tǒng)的限制值effective_open_files;? 3.根據(jù)effective_open_files調(diào)整request_open_files;? 4.根據(jù)調(diào)整后的request_open_files,計(jì)算實(shí)際生效的參數(shù)值(show variables?可查看參數(shù)值)。計(jì)算request_open_filesrequest_open_files有三個(gè)計(jì)算公式:1. ??? ?// 最大連接數(shù)+同時(shí)打開的表的最大數(shù)量+其他(各種日志等等)2. ? ? limit_1= max_connections+table_cache_size * 2 + 10;3.? ?4.???? ?//假設(shè)平均每個(gè)連接打開的表的數(shù)量(2-4)5. ? ? ?//源碼中是這么寫的:6. ? ? ?//We are trying to allocate no less than?7. ? ???// max_connections*5 file handles8. ? ? ?limit_2= max_connections * 5;9.? ?10. ? ?//mysql 默認(rèn)的默認(rèn)是500011. ? ?limit_3= open_files_limit ? open_files_limit : 5000;12. ?13. ? ? 所以open_files_limit期待的最低14. ? ? request_open_files= max(limit_1,limit_2,limit_3);計(jì)算effective_open_files:MySQL 的思路:?
在有限值的的范圍內(nèi)MySQL?盡量將effective_open_files的值設(shè)大。
修正request_open_files
requested_open_files= min(effective_open_files,?request_open_files)
重新計(jì)算參數(shù)值
修正open_files_limit
open_files_limit?=?effective_open_files
修正max_connections
max_connections?根據(jù)?request_open_files?來做修正。1.? limit = requested_open_files - 10 - TABLE_OPEN_CACHE_MIN * 2;
如果配置的max_connections值大于limit,則將max_connections?的值修正為limit
其他情況下?max_connections?保留配置值
修正table_cache_size
table_cache_size?會(huì)根據(jù)?request_open_files?來做修正1. ??// mysql table_cache_size 最小值,4002. ? limit1 = TABLE_OPEN_CACHE_MIN3. ??// 根據(jù) requested_open_files 計(jì)算4. ? limit2 = (requested_open_files - 10 - max_connections) / 25. ? limit = max(limit1,limt2);
如果配置的table_cache_size?值大于limit,則將?table_cache_size?的值修正為limit
其他情況下table_cache_size?保留配置值
舉例
以下用例在非 root 用戶下運(yùn)行
參數(shù)設(shè)置:
//mysql
max_connections = 500
? ?table_open_cache = 999
//ulimit -n
1500
生效的值:
open_files_limit = 1500? ?max_connections = min[(1500 - 10 - 800),500] = 500
table_open_cache = ( 1500 - 10 - 500) / 2 =495
實(shí)這個(gè)問題要拆分成兩個(gè)問題。
第一是操作系統(tǒng)所采用的文件系統(tǒng)能支持的單個(gè)文件大小,比如:
linux 2.2-intel 32-bit (ext2文件系統(tǒng)) 最大支持2GB
linux 2.4+ (ext3文件系統(tǒng)) 支持4TB
win32 (fat32文件系統(tǒng)) 4GB
win32 (ntfs文件系統(tǒng)) 2TB
第二是存儲(chǔ)引擎本身能支持的最大空間大小。比如
InnoDB存儲(chǔ)引擎的表空間最大容量為64TB,不具體限制單表的大小,但受限于表空間。
MyISAM
最大表尺寸為65536TB,但是在 MySQL5.0版本之前,默認(rèn)情況下,MyISAM單個(gè)表允許的最大尺寸為4GB,你可以通過 SHOW
TABLE STATUS 語句或 myisamchk -dv tbl_name 檢查表的最大尺寸,如果是4G,可以通過修改
AVG_ROW_LENGTH 和 MAX_ROWS 選項(xiàng)的值來達(dá)到目的。MySQL5.0版本后,默認(rèn)MyISAM表的限制是256TB。
在老版本的MySQL 3.22中,MySQL的單表限大小為4GB,當(dāng)時(shí)的MySQL的存儲(chǔ)引擎還是ISAM存儲(chǔ)引擎。但是,當(dāng)出現(xiàn)MyISAM存儲(chǔ)引擎之后,也就是從MySQL 3.23開始,MySQL單表最大限制就已經(jīng)擴(kuò)大到了64PB了(官方文檔顯示)。也就是說,從目前的技術(shù)環(huán)境來看,MySQL數(shù)據(jù)庫的MyISAM存儲(chǔ) 引擎單表大小限制已經(jīng)不是有MySQL數(shù)據(jù)庫本身來決定,而是由所在主機(jī)的OS上面的文件系統(tǒng)來決定了。
而MySQL另外一個(gè)最流行的存儲(chǔ)引擎之一Innodb存儲(chǔ)數(shù)據(jù)的策略是分為兩種的,一種是共享表空間存儲(chǔ)方式,還有一種是獨(dú)享表空間存儲(chǔ)方式。
當(dāng)使用共享表空間存儲(chǔ)方式的時(shí)候,Innodb的所有數(shù)據(jù)保存在一個(gè)單獨(dú)的表空間里面,而這個(gè)表空間可以由很多個(gè)文件組成,一個(gè)表可以跨多個(gè)文件存在,所 以其大小限制不再是文件大小的限制,而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大限制為64TB,也就是說,Innodb的單 表限制基本上也在64TB左右了,當(dāng)然這個(gè)大小是包括這個(gè)表的所有索引等其他相關(guān)數(shù)據(jù)。
而當(dāng)使用獨(dú)享表空間來存放Innodb的表的時(shí)候,每個(gè)表的數(shù)據(jù)以一個(gè)單獨(dú)的文件來存放,這個(gè)時(shí)候的單表限制,又變成文件系統(tǒng)的大小限制了。
32位的操作系統(tǒng),單個(gè)文件最大是4G,64位的系統(tǒng),你就自己去算吧,4G的平方
本文標(biāo)題:mysql怎么看最大容量,查看mysql存儲(chǔ)數(shù)量 大小
新聞來源:http://chinadenli.net/article37/dsigopj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站改版、品牌網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)