0

mySQL のデータ ウェアハウスのサイズはほぼ 1.4 TB ですが、mysql サーバー デーモンがアクセスしているファイルの数を確認したところ、驚きました。

cmd ユーザー : lsof | grep mysql cnd2 使用: lsof | grep mysql | wc -l 2598 これを減らす方法を提案してください。mysql のパフォーマンスに与える影響は何ですか。

4

1 に答える 1

0

おそらく、MySQL が開いているファイルの数を減らすことができます。ただし、これによりパフォーマンスが低下する可能性があることに注意してください。パフォーマンスに関して、(開いているファイルの数よりも) もっと重要なのは、ファイルを閉じたり開いたりすることです。(ファイルを開いたままにしておくよりもコストがかかります。)

MySQL は開いているテーブルをキャッシュし、最近使用したファイルを開いたままにします。これにより、ファイルを閉じて後で再度開くことに伴うパフォーマンスのオーバーヘッドが回避されます。開いているテーブルの数の制限は、table_open_cache変数で設定されます。

MySQL が開いているファイル数の制限は、max_open_files変数に設定されています。

参照: http://dev.mysql.com/doc/refman/5.5/en/table-cache.html


MyISAM テーブルは、テーブル名.frm、テーブル名.MYD、およびテーブル名.MYI の 3 つのファイルとしてディスクに保存されることに注意してください。テーブルがパーティション化されている場合、各パーティションには個別のファイルが必要です。

InnoDB エンジンでinnodb_file_per_tableは、テーブルの作成時にオプションが設定されている場合、それは tablename.frm と tablename.idb の 2 つのファイルです。

複数のセッションがテーブルにアクセスしている場合、そのテーブルには複数の「開いているファイル」があります。

また、いくつかの innodb ログ ファイル、mysql ログ ファイル (ロギングが有効になっている)、mysql 一般ログ、スロー クエリ ログなどがあります。

「メモリ内」に格納されるテーブルのサイズの制限を超える一時テーブル、派生テーブル、または中間結果セットは、追加のファイルがディスクにスピンアウトされ、さらに多くのファイルが開かれる可能性があります。


「開いているファイルが多すぎます」という OS エラーが発生した場合は、OS の制限を増やすことができます。それが不可能な場合は、max_open_files変数を減らします。他の関連する変数も減らす必要があるかもしれません。

パフォーマンス低下の解決策として開いているファイルの数を制限することを検討している場合、MySQL が開いたままにしておくことができるファイルの数を減らすとパフォーマンスが低下する可能性があるため、間違ったツリーを作成している可能性があります。

于 2014-09-23T03:16:27.873 に答える