powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация данных
25 сообщений из 27, страница 1 из 2
Оптимизация данных
    #38528120
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вот база данных, в которую очень активно пишутся данные, и так же активно удаляются, пример 1-2кк записей за сутки по ней проходит. Проблема в том, что через некоторое время таблица становится сильно фрагментированной и нужно делать оптимизацию, чтобы вернуть неиспользуемое дисковое пространство. Проблема в том, что оптимизация этой таблице происходит достаточно долго, даже на ССД дисках, а нужно 100% доступность данных всегда. Сделал партиционирование, но даже тут пока не нашел способов решения проблемы, думал может можно как-то отдельные партишены выводить из работы и делать с ними что захочется, но нифига...
Партиционирование осуществляется по дням месяца, и обычно нужны данные за сегодня и вчера, поэтому остальные партишены можно было бы и оптимизировать, но вся база при этом все равно лочится...
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528143
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что через некоторое время таблица становится сильно фрагментированной и нужно делать оптимизацию, чтобы вернуть неиспользуемое дисковое пространство.


На основе чего ты сделал такие выводы ?
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528162
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На основе личных наблюдений.
Вообще в документации сказано, что команда OPTIMIZE нужна для оптимизации данных в случае с динамическим размером строки, у меня хоть размер и статичный, специально сейчас провел эскперимент:

-rw-rw---- 1 mysql mysql 201326592 Jan 16 09:24 /var/lib/mysql/db/fh_download#P#p15.ibd
-rw-rw---- 1 mysql mysql 385875968 Jan 16 09:25 /var/lib/mysql/db/fh_download#P#p16.ibd

удаляем 1000 строк из 15-ой секции:

-rw-rw---- 1 mysql mysql 201326592 Jan 16 09:31 /var/lib/mysql/db/fh_download#P#p15.ibd
-rw-rw---- 1 mysql mysql 390070272 Jan 16 09:31 /var/lib/mysql/db/fh_download#P#p16.ibd

вуаля....
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528183
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно если удалить все данные из партиции и потом сделать оптицизацию ее, то это будет быстро... надо попробовать
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528186
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettВозможно если удалить все данные из партицииЕсть TRUNCATE PARTITION и DROP PARTITION.
Что именно вы используете?
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528196
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftЕсть TRUNCATE PARTITION и DROP PARTITION.
Что именно вы используете?

Я честно говоря еще только разбираюсь в партишенах и даже не знал про TRUNCATE, видимо это как раз то, что нужно. На данный момент данные удалялись просто с помощью DELETE
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528223
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Не надо DELETE, это медленно и печально.
Скорее всего вам нужен DROP PARTITION. Ведь пустая секция потом не нужна?
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528238
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftHett,

Не надо DELETE, это медленно и печально.
Скорее всего вам нужен DROP PARTITION. Ведь пустая секция потом не нужна?

Да понимаю что ненадо, раньше поток данных был небольшой, данные записывались и удалялись, не было партиционирования.
Сейчас я сделал просто 31 партицию, так сказать на каждый день. Думаю просто транкейтом очищать старые. Как вариант, конечно, можно еще автоматически создавать новые (где-то видел вариант с хранимкой, но что-то мне он не понравился, лишние напряги для мускуля).
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528245
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще в доках мускуля нашел, что оптимизация партишена нужна только в случае с динамическим размером строки
http://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html
но прям не знаю, у меня они чего-то файлы данных очищались сами...
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528284
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЕще в доках мускуля нашел, что оптимизация партишена нужна только в случае с динамическим размером строки
http://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html Про динамический размер - не страшно, у вас же данные не изменяются, насколько я понял.
http://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html If you have deleted a large number of rows from a partition or if you have made many changes to a partitioned table with variable-length rows (that is, having VARCHAR, BLOB, or TEXT columns), you can use ALTER TABLE ... OPTIMIZE PARTITION to reclaim any unused space and to defragment the partition data file.
А вот это интереснее: http://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html Some MySQL storage engines, including InnoDB, do not support per-partition optimization ; in these cases, ALTER TABLE ... OPTIMIZE PARTITION rebuilds the entire table . In MySQL 5.5.30 and later, running this statement on such a table causes the entire table to rebuilt and analyzed, and an appropriate warning to be issued. (Bug #11751825, Bug #42822) Use ALTER TABLE ... REBUILD PARTITION and ALTER TABLE ... ANALYZE PARTITION instead, to avoid this issue.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528387
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettНа основе личных наблюдений.
Вообще в документации сказано, что команда OPTIMIZE нужна
вуаля....

Жаль, что там не сказано, что она не нужна. Кратковременный эффект от optimize основан на том, что все данные таблицы помещаются в кеш в памяти.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528402
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, как понял вообще, OPTIMIZE просто пересоздает таблицу... хотя честно говоря я им никогда не пользовался, т.к. он какой-то бесмысленный, т.к. блокирует всю таблицу и на долго...
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528567
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте другие sorage engine использовать для хранения данных,
если транзакции и внешние ключи не сильно важны -MyISAM,

одна из веток эволюции Mysql, - MariaDB имеет myisam с транзакциями(Area),
есть аналог Innodb не помню как называется,
у маши многие глюки mysql исправлены,
дома попробовал все культурно работает,
теперь везде машу по возможности ставить буду
...
Рейтинг: 0 / 0
Оптимизация данных
    #38528710
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkovодна из веток эволюции Mysql, - MariaDB имеет myisam с транзакциями(Area),
есть аналог Innodb не помню как называется,
у маши многие глюки mysql исправлены,
дома попробовал все культурно работает,
теперь везде машу по возможности ставить буду
А, это тот продукт где совместимость функций regex сломали и все сайты на DLE перестали работать ? да ставьте, конечно.
https://mariadb.com/kb/en/pcre-regular-expressions/
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529053
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все равно regexep у мускл работает корректно только на латинице
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529173
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем поимел геморою с этим партиционированием.
Почти сутки все работало хорошо, но потом вдруг сервер показал нагрузку 800%
В SHOW PROCESSLIST было очень много запросов к этой таблице в стадии 'Sending data', перезапуски мускуля и т.п. потуги ничего не дали, в итоге пришлось закомментировать пару маловажных запросов в коде, после чего сервер БД поднялся с колен и продолжал работу с нагрузкой в пару раз больше чем обычно. Потом убрал партиционирование и все заработало нормально.... Что это было? Боюсь теперь даже его использовать. И оттестить то не оттестишь нормально, сутки вот проработало ведь.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529175
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем закомеентированные вопросы 100% использовали индекс (составной из 4х полей, они просто проверяли наличие данных в таблице, по сути ничего не выбирали там особо)
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529181
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Хорошо бы было включить slow query log и посмотреть запросы с "затыками".
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529212
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftHett,

Хорошо бы было включить slow query log и посмотреть запросы с "затыками".
Дело в том, что я их просто в SHOW PROCESSLIST видел, они не то чтобы долго выполнялись, они вообще просто висели не выполнялись, это было видно по времени
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529466
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, ну раз посоветовали включить, почему бы не включить?
ответ на вопрос "что это было?" - это была непродуманная политика сбора информации о производительности сервера.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529468
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkovвсе равно regexep у мускл работает корректно только на латинице
что касается эпизода с CMS DLE, то все там корректно работает с regex. Там циферки используются.
Плохой запрос на выбор категорий, однако он есть. И в Mariadb он сломался.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529479
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindHett, ну раз посоветовали включить, почему бы не включить?
ответ на вопрос "что это было?" - это была непродуманная политика сбора информации о производительности сервера.

Не знаю тогда как продумывать, обычно нагрузка 100% (исходя из 8 ядер процессора, нужно считать что это 1/8), потом в один прекрасный момент нагрузка становится 800, данные вообще не обрабатываются, все висит, не понятно что происходит. Как нужно было продумывать я не знаю. Я конечно мог бы предоложить, что в какой-то момент не хватило кэша процессора и все встало, но тогда хоть как-то данные бы должны были обрабатываться, а оно вообще все стояло ступором...
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529484
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, ну как продумывать? заранее продумывать !
так slow log не был включен ?
Если нет информации, то и нет идей. А предположений может быть слишком много. Там еще и наверняка у вас не только mysql крутится.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529490
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettчто в какой-то момент не хватило кэша процессорауж это тут точно ни при чем.
...
Рейтинг: 0 / 0
Оптимизация данных
    #38529517
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindHett, ну как продумывать? заранее продумывать !
так slow log не был включен ?
Если нет информации, то и нет идей. А предположений может быть слишком много. Там еще и наверняка у вас не только mysql крутится.

Только MySQL. Лог был выключен на тот момент. Но я не знаю, чтобы он мог дать, я во время проявления проблемы смотрел какие запросы висят в обработке, но чем бы это могло помочь?
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]