2013-01-25 4 views
1

Мне было интересно, есть ли способ уменьшить открытые файлы в mysql.Mysql уменьшает открытые файлы

Детали:

  • MySQL 5.0.92

  • двигателя используется: MyISAM

  • SHOW GLOBAL STATUS LIKE 'Opened_tables': 150K

  • SHOW ПЕРЕМЕННЫЕ LIKE «% открытый% ':

    open_files_limit 200000 
        table_open_cache 40000 
    

Solutions пытался:

  • перезагрузка сервера: он работает открываемый таблицы счетчика 0, но это не является хорошим решением от моего POV, поскольку вам потребуется перезагрузка каждую неделю, потому что счетчик увеличится быстро

  • FLUSH TABLES: как и MySQL док сказал, что это должно заставить все таблицы используется, чтобы закрыть, но это не происходит

Значит, любые мысли по этому вопросу?

ответ

4

Как правило, многие открытые столы не о чем беспокоиться. Если вы приближаетесь к пределам ОС, вы можете увеличить эти пределы в настройках ядра:

How do I change the number of open files limit in Linux?

MySQL открывает таблицы для каждой сессии независимо друг от друга, чтобы лучше параллелизма.

В table_open_cache и max_connections системные переменные влияют на максимальное количество файлов, сервер держит открытыми. Если вы увеличите одно или оба из этих значений, вы можете столкнуться с лимитом, накладываемым вашей операционной системой на число процессов для открытых файловых дескрипторов. Многие операционные системы позволяют увеличить ограничение на открытые файлы, хотя этот метод сильно варьируется от системы к системе.

Более подробно это объясняется здесь

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

EDIT

Для проверки предположения можно уменьшить max_connections и table_open_cache временно SET GLOBAL table_open_cache := newValue.

Значение может быть настроено динамически без перезагрузки сервера.

Предыдущий MySQL 5.1 эта переменная называется table_cache

То, что я пытался сказать, заключается в том, что уменьшение этого значения, вероятно, даже негативно скажется на производительности с точки зрения менее возможных параллельных чтений (очередь будет длиннее), вместо этого вы должны попытаться увеличьте предел ОС и увеличьте max_open_files, но, возможно, я просто не вижу смысла здесь

+0

Thx для ввода ur Michel. Да, я знаю, что таблицу можно открывать несколько раз с помощью параллельных подключений, но моя главная проблема здесь в том, что я считаю, что ввод-вывод на сервере сильно искалечен тем фактом, что в mysql есть много открытых файлов. Это мое предположение, которое может быть недействительным. – Stephan

+0

, чтобы проверить, что вы можете временно уменьшить 'max_connections' и' table_open_cache' на 'SET GLOBAL table_open_cache: = newValue'. До MySQL 5.1 эта переменная называется [table_cache] (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_table_cache). Значение может быть настроено динамически без перезагрузки сервера. –

+0

Да, ур, я попробую. Также в отношении предложения ur увеличить лимит мы уже имеем open_files_limit = 200k, и он еще не достигнут. – Stephan

Смежные вопросы