• Как увеличить скорость insert и select MyISAM?

    motylkov
    @motylkov
    synapse_people,

    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 )),
  • Как увеличить скорость insert и select MyISAM?

    motylkov
    @motylkov
    Вот еще тест записи без кэша на другом аналогичном сервере, но уже SATA диски

    # 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, 3.67292 s, 292 MB/s
  • Как увеличить скорость insert и select MyISAM?

    motylkov
    @motylkov
    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 миллионов записей на таком железе - наверно оно будет тормозить.
    Да и памяти оперативной скорее всего может быть маловато, хотя я не знаю интенсивности операций чтения/записи.