Comments 19
skip-external-locking —… когда несколько серверов работают с одними и теми же файлами данных, т.е. имеют одинаковую datadir, что на практике не используется
почему не используется? и для чего вообще предназначено было с практической точки зрения? для поднятия двух инстансов БД на разных физических компах, которые работают с одними и теми же данными? если да, то о существовании подобного решения спрашивал у одного моего знакомого специалиста, он не знал о такой возможности
Для поднятия нескольких инстансов БД на одном физическом компе. Когда-то разработчики думали, что это может быть востребовано.
и для чего вообще предназначено было с практической точки зрения?
dev.mysql.com/doc/refman/5.0/en/external-locking.html
спасибо!
По поводу SHOW STATUS LIKE…
Есть сессионые значения, есть глобальные — смотреть scope в документации. Для последних надо использовать SHOW GLOBAL STATUS LIKE '%disk%' например.
По поводу max_heap_table_size, а также tmp_table_size:
Если в explore выражения появляется temporary — значить при выполнении этого запроса будет создаваться временная таблица MEMORY. Если в это временной таблице нет TEXT или BLOB полей — тогда они, а также те что не влезают в указанные выше параметры создаются на диске. Каждый раз при этом инкрементируется переменная Сreated_tmp_disk_tables. Она не уменьшаеться :)
Есть сессионые значения, есть глобальные — смотреть scope в документации. Для последних надо использовать SHOW GLOBAL STATUS LIKE '%disk%' например.
По поводу max_heap_table_size, а также tmp_table_size:
Если в explore выражения появляется temporary — значить при выполнении этого запроса будет создаваться временная таблица MEMORY. Если в это временной таблице нет TEXT или BLOB полей — тогда они, а также те что не влезают в указанные выше параметры создаются на диске. Каждый раз при этом инкрементируется переменная Сreated_tmp_disk_tables. Она не уменьшаеться :)
Сорри
Если в это временной таблице есть TEXT или BLOB поля…
Если в это временной таблице есть TEXT или BLOB поля…
Также по поводу где смотреть.
По сети гуляют два замечательных скрипта tuning-primer.sh и mysqlreport — они групируют и вычисляют некоторые значения, что для начинающего будет очень позновательно. но конечно в детали надо вникать по-любому.
Смотреть уже известные параметры проще через mysql клиент в ssh:
создайте alias для себя типа
По сети гуляют два замечательных скрипта tuning-primer.sh и mysqlreport — они групируют и вычисляют некоторые значения, что для начинающего будет очень позновательно. но конечно в детали надо вникать по-любому.
Смотреть уже известные параметры проще через mysql клиент в ssh:
создайте alias для себя типа
alias rootdb='mysql -u root -ppass'ну и для каждой базы со своим юзером и запускайте что нить типа
rootdb --execute="show global status like '%disk%';"
Спасибо автору. Записал в закладки. Очень хорошая выдержка из километров документации.
Вы уж извините, но это не «Настройка и оптимизация», а перевод части документации по параметрам, с помощью которых можно оптимизировать работу сервера. Про саму настройку ничего, про оптимизацию тоже (где рекомендации, типовые случаи/примеры ?).
Это не дословный перевод, я постарался более понятно изложить описание опций. Также, к большинству опций приведено дополнительное описание, рекомендованные значения и на что ориентироваться при выборе значений, этого в документации нет.
А типовых случаев не бывает, как я считаю. В каждом случае нужно подбирать свои опции, поэтому готовых примеров не привожу.
Предложите более адекватное название статьи.
А типовых случаев не бывает, как я считаю. В каждом случае нужно подбирать свои опции, поэтому готовых примеров не привожу.
Предложите более адекватное название статьи.
innodb_flush_log_at_trx_commit — имеет три допустимых значения: 0, 1, 2. При значении равном 0, лог сбрасывается на диск один раз в секунду, вне зависимости от происходящих транзакций. При значении равном 1, лог сбрасывается на диск при каждой транзакции. При значении равном 2, лог пишется при каждой транзакции, но не сбрасывается на диск никогда, оставляя это на совести ОС. По умолчанию используется 1, что является самой надежной настройкой, но не самой быстрой. В общем случае вы можете смело использовать 2, данные могут быть утеряны лишь в случае краха ОС и лишь за несколько секунд (зависит от настроек ОС). 0 — самый быстрый режим, но данные могут быть утеряны как при крахе ОС, так и при крахе самого сервера MySQL (впрочем данные лишь за 1-2 секунды).
А вам не кажется, что самый быстрый режим это 2?
А для мониторинга работы сервера лучше использовать mytop, innotop и утилиты из maatkit.
Итого — читайте официальную документацию и блог www.mysqlperformanceblog.com/, а не переводы с «понятным» изложением.
Не статья а бонус прям какой то )
Автору большое спасибо. Ждемс продолжения )
Автору большое спасибо. Ждемс продолжения )
Я негодую!
Ни слова про innodb_flush_method, довольно важную настроечку, избавляющую от ненужного дабл буфферинга
www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/ «Eliminate Double Buffering»
Ни слова про innodb_flush_method, довольно важную настроечку, избавляющую от ненужного дабл буфферинга
www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/ «Eliminate Double Buffering»
Следует также заметить, что при изменении innodb_log_file_size придется остановить сервер и удалить (или переименовать) старый лог файл, для чего могут потребоваться рутовые права. Если же старый файл не удалять, mysql просто откажется стартовать.
Моя выжимка из конфига (не самая сильная dev-машина, 3G RAM, Dual CPU E2140 @ 1.60GHz)
[innodb]
innodb_buffer_pool_size = 1024M
innodb_flush_method = O_DIRECT
innodb_log_file_size = 256M
innodb_log_buffer_size = 4M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8
[mysqld]
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
log-queries-not-using-indexes
default-storage-engine = InnoDB
collation_server=utf8_general_ci
character_set_server=utf8
Моя выжимка из конфига (не самая сильная dev-машина, 3G RAM, Dual CPU E2140 @ 1.60GHz)
[innodb]
innodb_buffer_pool_size = 1024M
innodb_flush_method = O_DIRECT
innodb_log_file_size = 256M
innodb_log_buffer_size = 4M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8
[mysqld]
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
log-queries-not-using-indexes
default-storage-engine = InnoDB
collation_server=utf8_general_ci
character_set_server=utf8
За что спрашивается эта стотья попала на главную?
Sign up to leave a comment.
Настройка и оптимизация MySQL сервера