Answer the question
In order to leave comments, you need to log in
Mysql gives an overhead 50 times in a normal MyISAM table with a BLOB. How to reduce?
Есть 16 таблиц MyISAM. Первое поле — int, второе — BLOB. Второе поле может как расти, так и уменьшаться, но в целом размер меняется не очень быстро во времени (в большинстве запросов незначительно растёт). Операции — UPDATE (~100 в секунду). Размер таблиц ~4 ГБ каждая. В базу пишется около 200 КБ/с, но в iotop видно, что mysql пишет на ssd аж 10 МБ/с, т.е. оверхед 50 раз! Естественно, это негативно влияет на срок жизни ssd. Есть способ справиться с этим ужасом?
PS. Временная папка mysql смонтирована на tmpfs, поэтому здесь проблем не может быть.
Answer the question
In order to leave comments, you need to log in
200кб → в базу → чёрный ящик → 10мб/с
если рассмотреть чёрный ящик, то база кроме всего прочего работает не с каждым байтом данных, а с блоками по 4кб каждый. в каком порядке она их записывает — неизвестно
например, добавляя один байт данных в строке база может не найти под него место и тогда надо создавать новый 4кб блок, записывать его на диск, и записывать старый блок на диск помеченный как освободившийся (итого на 1 ваш байт - 8 кб записи) и т.д.
Но точно я вам никогда не скажу почему пишет там много, потому что только вы можете тулзами посмотреть с какими файлами работает база.
По идее БД типа berkeley db или leveldb должны иметь наименьший оверхед при записи данных т.к. все апдейты и инсерты там дописываются в конец последнего файла. У вас есть возможность вынести этот процесс в отдельную БД или перенести эту таблицу на движок BDB в рамках той же mysql?
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question