Questions since startup: 103,859,219
ø per hour: 11,408,226
ø per minute: 190,137
ø per second: 3,169
Statements # ø per hour %
insert 75,460 k 8,288.7 k 72.66
select 27,570 k 3,028.4 k 26.55
мысли такие:
мне кажется нужно в конфиге убавить query_cache_size=128M
до 8-16 М, ибо с такой интенсивной записью, этот кэш становится бесполезен и мы получаем только деградацию производительности селекта.
большой rps на запись приводит к возникновению конкуренции доступа к индексу, даже если он помещается в кэш, то быстро протухает, ибо доступ к диску ему тоже нужен. И нужно проверить как процессы в базу пишут, возможно что там есть что оптимизировать, например добавить транзакции и делать вставку сразу порции записей. Это нужно пробовать.
Vitaly Karasik правильно писал про InnoDB - на большом объеме оно весьма хорошо, попробуйте и сравните производительность
И купите что-ли raid контроллер с кэш памятью да зеркало из SAS дисков или M.2 SSD )),
synapse_people, А смарт параметры у диска что говорят, откуда этот system lock?
Кэш память на RAID массиве позволяет очень сильно увеличить скорость чтения и записи (фактически ведь операции записи идут не непрерывно и кэш контроллера их быстро принимает а потом уже спокойно пишет на диски. Сам SAS диск имеет несколько другие принципы работы, отличные от SATA что позволяет ему писать данные быстрее, ну и обороты на нормальных дисках уже 10-15т.
Вот я приведу пример
Старый сервер HP 380 G8, который был куплен как БУ
контроллер с кэш памятью и батарейкой
10 RAID из 8 дисков около 600г SAS 10k
Сервер в работе и там нагрузка есть с интенсивными чтением и записью
но почти вся работа в оперативке, ибо её много
Смотрим диски
Запись гигабайтного файла с кэшем
# sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.876294 s, 1.2 GB/s
Запись гигабайтного файла без кэша
# sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.247 s, 478 MB/s
Чтение гигабайтного файла с кэшем
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.251651 s, 4.3 GB/s
Чтение гигабайтного файла без кэша
# /sbin/sysctl -w vm.drop_caches=3
vm.drop_caches = 3
# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.65139 s, 650 MB/s
хорошо, допустим железо плохое
как можно проверить, что это действительно так?
Разве текущие характеристики компьютера об этом не говорят? Ну 100 миллионов записей на таком железе - наверно оно будет тормозить.
Да и памяти оперативной скорее всего может быть маловато, хотя я не знаю интенсивности операций чтения/записи.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
мысли такие:
мне кажется нужно в конфиге убавить query_cache_size=128M
до 8-16 М, ибо с такой интенсивной записью, этот кэш становится бесполезен и мы получаем только деградацию производительности селекта.
большой rps на запись приводит к возникновению конкуренции доступа к индексу, даже если он помещается в кэш, то быстро протухает, ибо доступ к диску ему тоже нужен. И нужно проверить как процессы в базу пишут, возможно что там есть что оптимизировать, например добавить транзакции и делать вставку сразу порции записей. Это нужно пробовать.
Vitaly Karasik правильно писал про InnoDB - на большом объеме оно весьма хорошо, попробуйте и сравните производительность
И купите что-ли raid контроллер с кэш памятью да зеркало из SAS дисков или M.2 SSD )),