|
|
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
Добрый день. В обслуживание достался офисный ПК: - процессор 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) временно улучшают ситуацию, но тормоза всё равно остаются. Связь с разработчиками софта отсутствует. Единственное, что могу сказать: по-видимому, при запуске софт считывает всю БД, поскольку загружается весьма долго. Компьютер работает круглосуточно, не перезагружается. Никаких оптимизаторов и очистителей оперативной памяти не используется. ВОПРОС: Какие общие рекомендации по настройке операционной системы и СУБД Вы можете дать, чтобы подоживить систему? С уважением, Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 16:33 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
"тюнинг" железа от "Кулибина" :-) обычный офисный ПК переделывается в "офисный сервер" следующим образом: - ОС Линукс х64 (проц у вас не Селерон, хотя у Атлонов малый кэш N-уровня), без иксов, только необходимое (допустим ЦентОС-server Убунту-server и т.д.). - см'отрите на макс ОЗУ поддерживаемое мат платой (пару 4Г для Dual найдете на авито элементарно), думаю должна быть поддержка 8Г как минимум, память берите с одинаковыми таймингами, ничего не "рагоняйте", память должна работать в своем спокойном режиме - сетевой интерфейс мин 1Г (это думаю есть), для небольшого офисного SQL-сервера более чем достаточно - базу вынести на отдельный диск (можно и программный рейд1 на двух дисках, время записи увеличится, чтения уменьшится) причем под систему достаточно маленькие ХДД 40Г-80Г (правда их уже и не найти), это с запасов, реально 4-6Г - вентилятор-кулер в районе дисков на фронтальной панели (диски работающие в перегреве - источник "заразы"), если есть кулер на задней панели - перенесите к дискам, принудительный обдув в 10 раз эффективнее. - ест-но "надежный" блок питания (его разборка и пылесос увеличивают надежность и срок службы), ИБП, визульная проверка на вздутие кондеров на материнской плате, изначально высыхают и пухнут только они, дальше проблемы только от них ..... .....[/quote] ОС Линукс без "Х" даст больше ресурсов, здоровье дисков незаметно в общем ускорит работу ------по MySQL обычные советы переход на версию 5.х, спокойно, ничего сложного, переход на InnoDB с MyIsam дальше "тюнинг" (медленные запросы, индексы и т.д.) хотя если будет ОЗУ 8Г все и так "оживится" ....ну а перезагрузку можете сделать по крону даже сейчас, допустим каждую полночь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 18:37 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242ВОПРОС: Какие общие рекомендации по настройке операционной системы и СУБД Вы можете дать, чтобы подоживить систему? Никаких. Спасибо за вопрос. Просто перестать надеяться, что это результативно. Работающих настроек, собственно, две : innodb_buffer_size - это классический кеш и innodb_flush_log_at_trx_commit=0 - это "запрещенный прием". Если вы их попробовали, то должны понимать, что никакой оптимизации mysql по сути не существует. Нет практического смысла заниматься непродуктивными танцами несмотря на массу невнятных статеек и перекопированных мнений. Если хотите результата - вам нужно сократить "задания" выполняемые mysql, а сами задания в виде запросов он делает достаточно хорошо. Зачем бы разработчикам могло понадобиться делать сразу плохо ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 20:53 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
Несколько пояснений. У меня нет особенного опыта администрирования СУБД. Я хотел бы у Вас уточнить: 1. Нормально ли, что ПК тормозит при таком количестве запросов. 2. Имеет ли смысл переходить на старшую версию MySQL с точки зрения прироста производительности. 3. Требуется ли регулярная перезагрузка Windows XP для стабильной работы MySQL. 4. Могут ли быть полезны дефрагментаторы оперативной памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 21:17 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
[quot ladoga1242]Несколько пояснений. У меня нет особенного опыта администрирования СУБД. Я хотел бы у Вас уточнить: 1. Нормально ли, что ПК тормозит при таком количестве запросов. [quot] дело не в количестве, а в их ресурсоемкости. 2. Имеет ли смысл переходить на старшую версию MySQL с точки зрения прироста производительности. Попробовать стоит, но обеспечить возможность быстрого отката. Действительно, в 5.7 оптимизатор может найти более удачный способ выполнения запросов. Но бывает и наоборот. 3. Требуется ли регулярная перезагрузка Windows XP для стабильной работы MySQL. Исходя из общих соображений администрирования - это иногда полезно, но вообще как-то примитивный способ решения проблем. По крайней мере, могу заявить, что это не является правилом хорошего тона администратора СУБД. 4. Могут ли быть полезны дефрагментаторы оперативной памяти. на мой взгляд, нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 21:34 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242Количество запросов на чтение мне неизвестно. Выясните. ladoga1242Софт, работающий с БД, подтормаживает. Установите точные причины. ladoga1242Какие общие рекомендации по настройке операционной системы и СУБД Вы можете дать, чтобы подоживить систему? Заменить ОС на серверную. Нарастить оперативки. Наладить плотный мониторинг за ОС и за сервером, и выявить ВСЕ узкие места. ladoga12423. Требуется ли регулярная перезагрузка Windows XP для стабильной работы MySQL. Если для стабильной работы необходимы перезагрузки - это свидетельство наличия ОЧЕНЬ серьёзных проблем. Windows XP под боевым сервером - вообще нонсенс. ladoga1242Могут ли быть полезны дефрагментаторы оперативной памяти. Дефрагментаторы памяти ВСЕГДА неполезны. И почти всегда - вредны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 21:41 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
mysqltuner.pl прогони ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 22:10 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
На всякий случай выложил структуру единственной крупной таблицы (порядка 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 10:28 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242, У тебя сколько памяти то свободно? Встроенная видео жрет, еще и 32 бит. Покажи свободно/кэшировано и список процессов системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 10:47 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242На всякий случай выложил структуру единственной крупной таблицы (порядка 5 млн. записей). На ней, собственно, и идёт торможение.Не, я фигею... вот какой смысл плакаться на абы тормоза, если до сих пор НИ ОДНОГО слова по делу не сказано? Кому и зачем нужна эта твоя структура? Всё равно она ничего, кроме 95% уверенности в безграмотности архитектора, дать не может. Кроме, может, одного - если нет ошибки, средний размер записи действительно соответствует указанному, и старт клиентской части продолжается менее полуминуты, то утверждение "при запуске софт считывает всю БД" ложно, по крайней мере для этой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 18:48 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242, простой вопрос: а сколько свободного места на диске С: ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 21:03 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242- СУБД MySQL 4.1Это опечатка или шутка в 2016 году? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 21:34 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
На системном диске С: имеется свободных 50 ГБ. Софт может загружаться в худшем случае до получаса. После удаления годичных записей и дефрагментации время уменьшается до 5 минут. Софт подтормаживает при переключении на вкладку событий по конкретному объекту, то есть при выборке событий по objectnr с сортировкой по receivedtime и лимитом 60. Ещё небольшой вопрос. При установке MySQL был выбран вариант Server Machine. Изменится ли производительность, если выбрать Dedicated MySQL Server Machine? Может, для таблицы сменить тип MyISAM на InnoDB? PS. Поздравляю всех с наступающим праздником Рождества Христова! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 12:23 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242, ---- вопрос о своб.месте на С: связан с тем что по неписанным законом WinXP нелогично работает и загружается при своб. месте <~4Г (недоказуемо, неописуемо, из практики) --- Dedicated - когда сервер только для MySQL Server Machine - когда на ПК используются еще какие нибудь сервера Это все условно Инфо --- Вы так и не показали my.ini - файл конфигурации, по которому и можно что-то предположить также нужен анализ ваших логов. --- Все далее - пальцем в небо....... Пол часа на загрузку - это очень много...... Может быть, что ваш диск умирает, или после нелогичного завершения идет какой-нибудь рековери. Может быть, ресурсов в my.ini выделено очень много - начинается "своп" - это наиболее вероятно. Использование системного диска (если у вас базы расположены /mysql/data как в стандартной установке) для нагруженной базы - смерти подобно Может быть....(здесь должно быть продолжение на несколько строк) --- Может, для таблицы сменить тип MyISAM на InnoDB? да смотри 18634524 ] выше, все займет 1 рабочий день "с нуля", выгрузить дамп, сделать сервер x64 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 16:19 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242На системном диске С: имеется свободных 50 ГБ.Значит еще и файловая система фрагментирована сильно. Я бы предложил вынести базу на отдельный физический диск. В идеале на SSD. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 16:22 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242PRIMARY KEY (id), ... UNIQUE INDEX id (id), INDEX id_2 (id), Зачем так много одинаковых индексов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 18:25 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242, А ты храбрый, сидишь на бомбе с тикающими часами, и не знаешь, как ей управлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 21:24 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
Посоветуйте, пожалуйста, есть ли смысл с точки зрения прироста производительности в переносе базы с системного С на логический Д? Отдельный жесткий в бюджете пока не значится :( В ближайшее время выложу конфиг MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 11:00 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
[mysqld] basedir="C:/Program Files/MySQL/MySQL Server 4.1/" datadir="C:/Program Files/MySQL/MySQL Server 4.1/Data/" query_cache_size=0 table_cache=256 tmp_table_size=51M thread_cache_size=8 myisam_max_sort_file_size=100G myisam_max_extra_sort_file_size=100G myisam_sort_buffer_size=102M key_buffer_size=84M read_buffer_size=64K read_rnd_buffer_size=256K sort_buffer_size=256K # хотя тип таблиц myisam, решил выложить innodb_additional_mem_pool_size=3435K innodb_flush_log_at_trx_commit=1 innodb_buffer_pool_size=163M innodb_log_file_size=82M innodb_thread_concurrency=8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 11:44 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242, Эти значения при установке программы заданы ? Если программист так видит и они обусловлены его опытом поддержки программы, то может и стоит ему довериться. >query_cache_size=0 Исходя из моего понимания типичной программы типа "Автоматизированное Рабочее Место Дофига Специалиста" в конфигурации на обычном сервере надо бы поднять до 64мб. >key_buffer_size=84M Ну тоже поднимите. 300-500 мб. авторПосоветуйте, пожалуйста, есть ли смысл с точки зрения прироста производительности в переносе базы с системного С на логический Д? Отдельный жесткий в бюджете пока не значится :( Падение производительности при почти полном заполнении логического диска имеет место. Но может тогда старый просто расчистить ? Просто так нет смысла переносить. Вы не написали что с железом. Мне, кажется, это в первую очередь надо проверить. Наверняка вы SMART диска не смотрели ни разу, не говоря уж о тестах (почему-то в windows отсутсвует широкоизвестное ПО для этого тестирования) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 11:57 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242есть ли смысл с точки зрения прироста производительности в переносе базы с системного С на логический Д?Не шибко большой, но есть. При условии, что там свободного места не менее, чем на 3-4 размера базы и если после размещения базы останется свободным не менее 20% от емкости раздела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 13:46 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
Изучение работы софта в последние дни даёт повод усомниться в высоком профессионализме разработчиков, поэтому рассчитывать на осмысленный выбор ими настроечных параметров MySQL я бы не стал... У меня ещё вопрос по файлу подкачки. В случае с MySQL какой его рекомендуемый объем? Оперативки стоит 4 ГБ, часть из них не видит XP 32-bit, ещё часть идёт на встроенное видео. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 14:50 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242У меня ещё вопрос по файлу подкачки. В случае с MySQL какой его рекомендуемый объем?Без разницы. Он не должен использоваться. Это просто некая страховка от пиковых расходов памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 15:48 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
ladoga1242, не поверю, что не найти жесткого диска на 40-80G пусть даже 5400 rpm найдите Тех мастерскую по ПК по вашим словам похоже еще и интегрированное в мазербоард видео, надо воткнуть отдельно старую PCI- или AGP видео карту... у вас достаточно быстрая мат.плата судя по "шине" памяти скачайте какой-нибудь Hirens BootCD для теста диска. Если температура близка к 39-40 - это НЕнормально, нормальная с обдувом должна быть до 37. Даже 1 градус может значительно повлиять на работу. Подготовьте спокойно этот "серверок", поверьте, ваши труды не пройдут даром, в нормально подготовленное железо вы не полезете очень долго, офисные серверки не все с сумасшедшими параметрами Решите с железом и ОС - дальше будет более радостно с MySQL. miksoftladoga1242есть ли смысл с точки зрения прироста производительности в переносе базы с системного С на логический Д? Не шибко большой, но есть. При условии, что там свободного места не менее, чем на 3-4 размера базы и если после размещения базы останется свободным не менее 20% от емкости раздела.есть только ради избавления конкуренции за место на жестком диске, т.е. в плане стабильного пространства под базу, по скорострельности - головка то у диска одна и остается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 16:55 |
|
||
|
оптимизация MySQL
|
|||
|---|---|---|---|
|
#18+
Наконец руки дошли включить логирование: 1. При запуске софта медленных запросов не выявлено, в общий лог пошли запросы проверки таблиц CHECK TABLE. На проверке таблицы событий прошло несколько минут. 2. При переключении на вкладку событий по конкретному объекту в лог медленных запросов попался вот такой (время выполнения несколько секунд): SELECT DATE_FORMAT(ev.receivedtime, '%Y.%m.%d') receiveddate, DATE_FORMAT(ev.receivedtime, '%Y.%m.%d %H:%i:%s') receivedtime, ev.receivedtime receivedtime2, CONCAT(ev.clasificator, " ", ev.eventcode, " ", ev.zonenumber) eventcode, ev.eventname, ev.reactedtime, HEX(CAST(ev.receivedlevel AS UNSIGNED)) receivedlevel, HEX(CAST(ev.retranslatorlevel AS UNSIGNED))retranslatorlevel, IF(ev.name IS NULL, HEX(CAST(ev.retranslator AS UNSIGNED)), ev.name) retranslatorname FROM (SELECT * FROM events LEFT JOIN retranslators ON events.retranslator = retranslators.nr WHERE events.objectnr='4103' and events.linenr='1' and events.receivernr='1' and (events.repeated =2 or events.repeated = 'No') ORDER BY events.receivedtime DESC LIMIT 50) ev ORDER BY receivedtime2 DESC; С долгим запуском можно смириться, но подвисания при запросах хотелось бы исключить. В этой связи несколько вопросов: 1. Насколько я понимаю, по железу запрос ложится прежде всего на процессор (и на жесткий диск, но на серверный ssd денег всё равно не дадут). Подскажите, пожалуйста, есть ли смысл в особой многоядерности процессора или достаточно максимально быстрого 4 ядерника? Сейчас работает Athlon X4 640 (4 ядра по 3 ГГц). Буду признателен за указание конкретной модели среднего ценового диапазона и под тот же AM3. 2. В настоящее время установлен MySQL 4.1, но если последние версии умеют распараллеливать запросы, сделаю апгрейд. 3. Как оптимально настроить MySQL? Текущие параметры my.ini были приведены выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2016, 09:47 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39143063&tid=1832303]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 477ms |

| 0 / 0 |
