SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 01.01.2016 16:38:35

ladoga1242
Участник
Зарегистрирован: 01.01.2016
Сообщений: 4

общие рекомендации по оптимизации MySQL

Добрый день.
В обслуживание достался офисный ПК:
- процессор AMD Athlon II X4 640 (4 ядра по 3 ГГц),
- оперативная память 4 ГБ PC3-10600 DDR-3,
- видео встроенное,
- жесткий диск Seagate ST500DM002 500 ГБ 7200rpm,
- операционка XP SP3 32-bit
- СУБД MySQL 4.1 и БД размером 3,6 ГБ.
К базе данных в час пик поступает порядка 70 запросов на запись в минуту, но не более 5000 запросов на запись в сутки. Количество запросов на чтение мне неизвестно.
Софт, работающий с БД, подтормаживает. Удаление старых записей и дефрагментация БД (dbForge Studio for MySQL) временно улучшают ситуацию, но тормоза всё равно остаются. Связь с разработчиками софта отсутствует. Единственное, что могу сказать: по-видимому, при запуске софт считывает всю БД, поскольку загружается весьма долго.
Компьютер работает круглосуточно, не перезагружается. Никаких оптимизаторов и очистителей оперативной памяти не используется.
ВОПРОС: Какие общие рекомендации по настройке операционной системы и СУБД Вы можете дать, чтобы подоживить систему?
С уважением, Сергей.

Неактивен

 

#2 01.01.2016 16:59:49

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: общие рекомендации по оптимизации MySQL

70 запросов на запись в минуту - это вообще не нагрузка. Общие рекомендации см. в Ботаническом определителе: http://sqlinfo.ru/a/i/rubtsov_mysqlbot.ppt

Если кратко, то скорее всего есть какая-то одна доминирующая причина торможения, ее можно найти.

Неактивен

 

#3 01.01.2016 18:21:28

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: общие рекомендации по оптимизации MySQL

Чтобы найти тот запрос, что считывает всю бд, включите лог медленных запросов и посмотрите что туда упадет после, допустим, суток.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 01.01.2016 21:26:24

ladoga1242
Участник
Зарегистрирован: 01.01.2016
Сообщений: 4

Re: общие рекомендации по оптимизации MySQL

Несколько пояснений. У меня нет особенного опыта администрирования СУБД. У Вас я хотел бы уточнить:
1. Имеет ли смысл переходить на старшую версию MySQL с точки зрения прироста производительности?
2. Требуется ли регулярная перезагрузка Windows XP для стабильной работы MySQL?
3. Могут ли быть полезны дефрагментаторы оперативной памяти?
4. И наконец, можно ли что-нибудь поделать, учитывая отсутствие доступа к коду софта и связи с девелоперами?

Неактивен

 

#5 01.01.2016 21:34:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: общие рекомендации по оптимизации MySQL

1. нет
2. для MySQL нет, если в самой системе Windows нет сторонних проблем, требующих перезагрузку
3. вряд ли помогут для MySQL
4. маловероятно

Неактивен

 

#6 01.01.2016 21:42:14

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: общие рекомендации по оптимизации MySQL

1. 4.1 - конечно устарело, но понять некоторые причины провисания можно и без обновления.

2. скорее нет, чем да

3. Во всяком случае рекомендовал бы сделать analyze и optimize всех табличек в базе (только отключите перед тем само приложение, работающее с базой).

4. Да, можно поанализировать логи медленных запросов (после, например, добавить индексы, увеличить какие-то буферы памяти). Может быть у табличек стоит engine сменить, какие они сейчас к слову? Сколько вообще табличек в базе, сколько в них записей?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 05.01.2016 10:30:05

ladoga1242
Участник
Зарегистрирован: 01.01.2016
Сообщений: 4

Re: общие рекомендации по оптимизации MySQL

На всякий случай выложил структуру единственной крупной таблицы (порядка 5 млн. записей). На ней, собственно, и идёт торможение.
Никакого обслуживания таблиц, кроме дефрагментации, не проводилось.

CREATE TABLE davp.events (
  id bigint(12) UNSIGNED NOT NULL AUTO_INCREMENT,
  receivernr tinyint(2) UNSIGNED DEFAULT NULL,
  linenr tinyint(2) UNSIGNED DEFAULT NULL,
  objectnr mediumint(8) UNSIGNED DEFAULT NULL,
  clasificator char(1) DEFAULT NULL,
  eventcode char(3) DEFAULT NULL,
  groupnr char(2) DEFAULT NULL,
  zonenumber char(3) DEFAULT NULL,
  status tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
  receivedtime timestamp DEFAULT CURRENT_TIMESTAMP,
  priority tinyint(1) UNSIGNED NOT NULL DEFAULT 0,
  selectable tinyint(3) NOT NULL DEFAULT 1,
  reactedtime timestamp NULL DEFAULT NULL,
  addedtoarchivetime timestamp NULL DEFAULT NULL,
  receivername varchar(30) DEFAULT NULL,
  linename varchar(30) DEFAULT NULL,
  retranslator tinyint(3) DEFAULT NULL,
  receivedlevel tinyint(3) DEFAULT NULL,
  retranslatorlevel tinyint(3) DEFAULT NULL,
  reactiontype tinyint(3) DEFAULT NULL,
  eventsource tinyint(3) DEFAULT NULL,
  eventname varchar(100) DEFAULT NULL,
  reactionid int(11) DEFAULT NULL,
  repeated enum ('Yes', 'No') NOT NULL DEFAULT 'No',
  playsound enum ('Yes', 'No') DEFAULT NULL,
  Reminder enum ('No', 'Yes') NOT NULL DEFAULT 'No',
  RemindInMinutes tinyint(3) DEFAULT NULL,
  RemindInHours tinyint(3) DEFAULT NULL,
  RemindFromTime datetime DEFAULT NULL,
  Remind enum ('No', 'Yes') NOT NULL DEFAULT 'No',
  RemindAtTime datetime DEFAULT NULL,
  ObjectName varchar(100) DEFAULT NULL,
  eventdescid int(9) UNSIGNED DEFAULT NULL,
  PRIMARY KEY (id),
  INDEX addedtoarchivesindx (addedtoarchivetime),
  INDEX clasificatorindx (clasificator),
  INDEX eventcodeindx (eventcode),
  INDEX groupnrindx (groupnr),
  UNIQUE INDEX id (id),
  INDEX id_2 (id),
  INDEX linenrindx (linenr),
  INDEX objectnrindx (objectnr),
  INDEX priorityindx (priority),
  INDEX reactedtimeindx (reactedtime),
  INDEX reactiontypeindx (reactiontype),
  INDEX receivedtimeindx (receivedtime),
  INDEX receivernameindx (receivernr),
  INDEX RemindIndx (Remind),
  INDEX selectableindx (selectable),
  INDEX statusindx (status),
  INDEX zonenumberindx (zonenumber)
)
ENGINE = MYISAM
AUTO_INCREMENT = 15901920
AVG_ROW_LENGTH = 150
CHARACTER SET latin1
COLLATE latin1_swedish_ci
MAX_ROWS = 1000000000;

Неактивен

 

#8 05.01.2016 11:27:36

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: общие рекомендации по оптимизации MySQL

Что значит "торможение"? Если медленно выполняются запросы, то какие именно?

Неактивен

 

#9 06.01.2016 12:23:41

ladoga1242
Участник
Зарегистрирован: 01.01.2016
Сообщений: 4

Re: общие рекомендации по оптимизации MySQL

Софт подтормаживает при переключении на вкладку событий по конкретному объекту, то есть при выборке событий по objectnr с сортировкой по receivedtime и лимитом 60.

Неактивен

 

#10 07.01.2016 00:42:42

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: общие рекомендации по оптимизации MySQL

включите лог медленных запросов, тогда будет понятно есть ли медленные запросы и какие именно

Неактивен

 

Board footer

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