SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.01.2009 18:38:23

Sky
Участник
Откуда: Астана
Зарегистрирован: 26.01.2009
Сообщений: 7

Пресловутый my.cnf

Здравствуйте, Я уже несколько дней читаю Ваш форум... и решил все же создать темку!
параметры VDS следующие:
ОЗУ 512
CPU 768

Данная VDS затачивается под движек php-fusion и некоторые запросы очень медленно выполняются, например:
 

SELECT tf.*, tt.*, tu.user_id,user_name, MAX(tp.post_id) as last_id, COUNT(tp.post_id) as count_posts FROM ".$db_prefix."forums tf
    INNER JOIN ".$db_prefix."threads tt USING(forum_id)
    INNER JOIN ".$db_prefix."posts tp USING(thread_id)
    INNER JOIN ".$db_prefix."users tu ON tt.thread_lastuser=tu.user_id
    WHERE ".groupaccess('forum_access')." GROUP BY thread_id ORDER BY thread_lastpost DESC LIMIT 0,".$settings['numofthreads']  

может выполняться до 5 секунд...

до первой настройки my.cnf вылетала ошибка

#1135 - Can't create a new thread (errno 12); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug

сейчас файл my.cnf выглядит так:

[mysqld]
skip-name-resolve
local-infile=0
skip-locking
skip-innodb
skip-bdb
key_buffer_size = 96M
table_cache = 1024
thread_cache = 16
record_buffer = 1M
max_connections = 150
sort_buffer_size = 8M
query_cache_limit = 1M
query_cache_size = 32M
query_cache_type = 1
join_buffer_size = 32M
log_slow_queries 
long_query_time=1
[mysql]
no-auto-rehash

что бы Вы мне посоветовали для оптимизации работы базы данных, сейчас остались проблемы с запросами в которых присутствует JOIN

Неактивен

 

#2 26.01.2009 19:02:18

Sky
Участник
Откуда: Астана
Зарегистрирован: 26.01.2009
Сообщений: 7

Re: Пресловутый my.cnf

еще появляются такие ошибки в пики нагрузки
Can't create/write to file '/tmp/#sql_5d1_0.MYD' (Errcode: 17)
хотя top показывает что еще примерно 200 Мб свободно в памяти

Неактивен

 

#3 27.01.2009 11:31:36

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Пресловутый my.cnf

$ perror 12
OS error code  12:  Cannot allocate memory
$ perror 17
OS error code  17:  File exists

Проблему Вы определили правильно, это действительно нехватка памяти. Какой тип таблиц у Вас?
MyISAM? Если InnoDB, то все ниженаписанное будет неверно wink

У Вас не хватает памяти для того, чтобы объединить эти таблички. MySQL старается не вылезти за
значения, которые Вы задали - key_buffer_size, join_buffer_size и sort_buffer_size (причем последний
выделяются на поток). Попробуйте поставить значение key_buffer_size больше (например, 200 мб),
а значение join_buffer_size - меньше. Нужно убедиться, что на всех табличках этого запроса есть
хорошие индексы (тогда join_buffer вообще не нужен).

Неактивен

 

#4 27.01.2009 11:51:19

Sky
Участник
Откуда: Астана
Зарегистрирован: 26.01.2009
Сообщений: 7

Re: Пресловутый my.cnf

paulus написал:

$ perror 12
OS error code  12:  Cannot allocate memory
$ perror 17
OS error code  17:  File exists

Проблему Вы определили правильно, это действительно нехватка памяти. Какой тип таблиц у Вас?
MyISAM? Если InnoDB, то все ниженаписанное будет неверно wink

У Вас не хватает памяти для того, чтобы объединить эти таблички. MySQL старается не вылезти за
значения, которые Вы задали - key_buffer_size, join_buffer_size и sort_buffer_size (причем последний
выделяются на поток). Попробуйте поставить значение key_buffer_size больше (например, 200 мб),
а значение join_buffer_size - меньше. Нужно убедиться, что на всех табличках этого запроса есть
хорошие индексы (тогда join_buffer вообще не нужен).

Спасибо) Тип таблиц MyISAM

Изменил параметры my.cnf на Ваш взгляд каких дириктив еще нехватает или что настроено не должным образом?

[mysqld]
lower-case-table-names = 2
skip-locking
skip-name-resolve
skip-networking
local-infile=0
skip-locking
skip-innodb
skip-bdb
key_buffer_size = 128M
table_cache = 512
record_buffer = 1M
thread_stack = 128K 
thread_cache_size = 8
read_buffer_size      = 256K
read_rnd_buffer_size  = 256K
net_buffer_length     = 2K
max_connections = 150
sort_buffer_size = 8M
wait_timeout=60
query_cache_limit = 1M
query_cache_size = 32M
query_cache_type = 1
join_buffer_size = 8M
log_slow_queries = /var/log/mysql/mysql-slow.log 
log_slow_queries 
long_query_time=1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
#no-auto-rehash

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

Неактивен

 

#5 27.01.2009 12:12:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Пресловутый my.cnf

Ничего плохого не вижу smile

Неактивен

 

#6 28.01.2009 19:02:56

Sky
Участник
Откуда: Астана
Зарегистрирован: 26.01.2009
Сообщений: 7

Re: Пресловутый my.cnf

а где можно найти полное описание параметров файла my.cnf желательно на русском языке!

Неактивен

 

#7 29.01.2009 19:53:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Пресловутый my.cnf

Есть два правильных места - сайт mysql.com и, собственно, help от сервера (mysqld --help --detail).
Оба на английском, по-русски актуальных источников не знаю.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson