一個(gè)數(shù)據(jù)庫(kù)實(shí)例存儲(chǔ)三四十萬(wàn)張表,如果表文件(.frm, .ibd等)放到同一個(gè)目錄,那么打開(kāi)表都會(huì)很慢,因?yàn)槊看未蜷_(kāi)一個(gè)表都要打開(kāi)對(duì)應(yīng)的2個(gè)表文件,文件系統(tǒng)效率會(huì)降低。如果這些表不是都用到,建議把不用的表歸檔然后從實(shí)例中刪除。如果這幾十萬(wàn)張表都是有用的,那么你要考慮分庫(kù)分表,以及考慮數(shù)據(jù)庫(kù)設(shè)計(jì)是否合理,每個(gè)表是不是只有很少的數(shù)據(jù),這些表能否合并,等等。否則,系統(tǒng)查詢(xún)這三四十萬(wàn)張表的需要反復(fù)在table cache中淘汰打開(kāi)的表才能打開(kāi)更多的表,性能會(huì)降低很多。打開(kāi)每個(gè)表需要打開(kāi)2個(gè)文件,通常linux操作系統(tǒng)不允許一個(gè)進(jìn)程打開(kāi)的文件達(dá)到六十萬(wàn)到八十萬(wàn)個(gè)的,在這樣的極限狀態(tài)下操作系統(tǒng)的文件系統(tǒng)的運(yùn)行效率也會(huì)大大降低。你需要把table_open_cache, innodb_open_files和open_files_limit 這3個(gè)mysql參數(shù)配置的盡可能大,不過(guò)mysqld啟動(dòng)之后,你看一下這3個(gè)變量,它們最終實(shí)際值是操作系統(tǒng)分配給mysqld進(jìn)程的,并不一定能達(dá)到你配置的值。
網(wǎng)站導(dǎo)航
- zblogPHP模板zbpkf
- zblog免費(fèi)模板zblogfree
- zblog模板學(xué)習(xí)zblogxuexi
- zblogPHP仿站zbpfang
mysql怎么分表查詢(xún),為何分表后mysql效率會(huì)更低?