[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
MySql сервер работает очень медленно
Помогите разобраться с проблемой, mysql обрабатывает запросы очень медленно, причем запросы SELECT возвращает быстро, а если надо сделать INSERT или UPDATE происходит очень долго. Примерно на один UPDATE уходит около 10 секунд. А в таблице 15 записей. Исправляю поле типа INTEGER.
Система:
VPS-сервер: 500Mhz 512Mb
OS: CentOS 5.1
Mysql 5.0.77
файл /etc/my.cfg
Код:
Также отслеживал запросы с помощью скрипта:
Код:
#!/bin/bash
while [ 1 ]
do
mysql -N --user=root --password=mypassword --host=127.0.0.1 mydb -e 'show processlist' |grep -v 'show processlist'
sleep 2
done
exit
while [ 1 ]
do
mysql -N --user=root --password=mypassword --host=127.0.0.1 mydb -e 'show processlist' |grep -v 'show processlist'
sleep 2
done
exit
Как будто зависает при выполнении, не может ведь он так долго выполнять? Вот результат скрипта:
Код:
47 root localhost mydb Query 2 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 4 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 6 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 8 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 11 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 13 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 15 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 17 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 4 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 6 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 8 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 11 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 13 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 15 end update categories set pos = '5' where id = '5'
47 root localhost mydb Query 17 end update categories set pos = '5' where id = '5'
Что может быть??? Может проблема в оптимизации vps-сервера??
Запрос (SELECT *) в 200 записей вместе с полем типа TEXT отрабатывает очень быстро!!!
А то что файл my.cnf почти пустой так и должно быть???
Uptime: 1211
Threads: 1
Questions: 385
Slow queries: 0
Opens: 29
Flush tables: 1
Open tables: 23
Queries per second avg: 0.318
Эту строку выводит после запроса UPDATE mysql_stat() (php).
Здесь еще что само интересно почему он пишет что открыто Open tables: 23 - Это так и должно быть???
и при этом при выполнении команды top, при отрабатывании запроса, говорит что все демоны mysqld в режиме ожидания, процессор вообще не используется и ОЗУ на половину свободно.
не загружена ли дисковая подсистема?
есть ли в таблице лишние индексы?
Свободно на диске 18Gb
В таблице лишних индексов нет. Всего 3 поля:
Код:
int(10) UNSIGNED auto_increment (PRIMARY)
varchar(255) utf8_general_ci
int(11)
varchar(255) utf8_general_ci
int(11)
Что посоветуете?
Стало все летать когда сменил тип таблиц InnoDB на MyISAM.
при конкурентной записи - получите тормоза.
вы не решили проблему, а отодвинули ее.