Database-Mysql-关于文件打开数限制
在Mysql中,打開(kāi)文件數(shù)過(guò)多會(huì)出現(xiàn)too many open files錯(cuò)誤。
與文件打開(kāi)數(shù)有關(guān)的參數(shù):
1、max_connections
最大連接數(shù):
增加該值會(huì)增加mysqld 要求的文件描述符的數(shù)量。如果服務(wù)器的并發(fā)連接請(qǐng)求量比較大,建議調(diào)高此值,以增加并行連接數(shù)量,當(dāng)然這建立在機(jī)器能支撐的情況下,因?yàn)槿绻B接數(shù)越多,介于MySQL會(huì)為每個(gè)連接提供連接緩沖區(qū),就會(huì)開(kāi)銷(xiāo)越多的內(nèi)存,所以要適當(dāng)調(diào)整該值,不能盲目提高設(shè)值。
2、table_open_cache
表高速緩存數(shù)量:
當(dāng)某一連接訪問(wèn)一個(gè)表時(shí),MySQL會(huì)檢查當(dāng)前已緩存表的數(shù)量。如果該表已經(jīng)在緩存中打開(kāi),則會(huì)直接訪問(wèn)緩存中的表已加快查詢速度;如果該表未被緩存,則會(huì)將當(dāng)前的表添加進(jìn)緩存并進(jìn)行查詢。
table_open_cache用于限制緩存表的最大數(shù)目,它的作用就是緩存表文件描述符,如已經(jīng)緩存的表未達(dá)到該值,則會(huì)將新表添加進(jìn)來(lái);若已經(jīng)達(dá)到此值,MySQL會(huì)根據(jù)緩存表的最后查詢時(shí)間、查詢率等規(guī)則釋放之前的緩存。
注意:在InnoDB存儲(chǔ)引擎中,表的打開(kāi)不受該參數(shù)限制,因?yàn)镮nnoDB會(huì)將其放到數(shù)據(jù)字典中,即在ibd文件里。
3、open_files_limit
操作系統(tǒng)運(yùn)行mysqld打開(kāi)的文件數(shù)目,該參數(shù)基于系統(tǒng)啟動(dòng)時(shí)指定的值。
有效的open_files_limit 計(jì)算公式如下:
備注:如果open_files_limit的值未設(shè)置,會(huì)使用以上三個(gè)值中的最大值作為獲取文件描述符的數(shù)量。
這里需要注意的是:
1、在一個(gè)已經(jīng)設(shè)置open_files_limit值的系統(tǒng)中,修改操作系統(tǒng)ulimit -n的值是不起作用的;
2、在未設(shè)置open_files_limit值的系統(tǒng)中,可以通過(guò)修改操作系統(tǒng)ulimit -n的值來(lái)完成設(shè)置;
3、兩者都需要重啟數(shù)據(jù)庫(kù)來(lái)讓配置生效。
總結(jié)
以上是生活随笔為你收集整理的Database-Mysql-关于文件打开数限制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 状态空间表示
- 下一篇: 基本的数据库概论和基本知识