Spec-Zone.ru › MariaDB

Производительность кэша сегментированных ключей

Метод тестирования производительности кэша сегментированных ключей

Мы использовали SysBench v0.5 с Launchpad для тестирования производительности кэша сегментированных ключей для движка хранения MyISAM в MariaDB 5.2.2-gamma.

В качестве оберточных скриптов для автоматического запуска SysBench мы использовали каталог sysbench/ из MariaDB Tools.

Для проверки того, что разделение глобального мьютекса кэша ключей на несколько мьютексов помогает под нагрузкой с несколькими пользователями, мы написали новый тест SysBench под названием select_random_points.lua. Мы использовали одну большую таблицу и выбирали случайные точки с возрастающим количеством одновременных пользователей.

Основные результаты тестирования

Мы наблюдаем прирост производительности до 250% в зависимости от количества одновременных пользователей.

Подробные результаты тестирования

На нашем компьютере pitbull

На pitbull с --random-points=10

pitbull_rp10

В относительных числах:

Threads	               1      4      8      16      32      64      128
(32/off)             -3%    53%    122%    155%    226%    269%    237%
(64/off)             -6%    55%    130%    162%    234%    270%    253%

select_random_points.lua --random-points=10

На pitbull с --random-points=50

pitbull_rp50

В относительных числах:

Threads	               1      4      8      16      32      64      128
(32/off)             -3%    53%    113%    154%    232%    254%    231%
(64/off)             -1%    55%    121%    161%    235%    268%    244%

select_random_points.lua --random-points=50

На pitbull с --random-points=100

pitbull_rp100

В относительных числах:

Threads	               1      4      8      16      32      64      128
(32/off)             -3%    54%    121%    160%    209%    246%    219%
(64/off)             -6%    56%    129%    167%    219%    260%    241%

select_random_points.lua --random-points=100

Подробные числа всех запусков на pitbull

Вы можете найти абсолютные и относительные числа в нашей электронной таблице OpenOffice.org здесь: SysBench v0.5 select_random_points на pitbull

На нашем компьютере perro

На perro с --random-points=10

perro_rp10

В относительных числах:

Threads	               1      4      8      16      32      64      128
(32/off)              1%     2%     17%     45%     73%     70%     71%
(64/off)             -0.3%   6%     19%     46%     72%     74%     80%

select_random_points.lua --random-points=10

На perro с --random-points=50

perro_rp50

В относительных числах:

Threads	               1      4      8      16      32      64      128
(32/off)              1%    10%     26%     69%    105%    122%    114%
(64/off)             -1%     8%     27%     75%    111%    120%    131%

select_random_points.lua --random-points=50

На perro с --random-points=100

perro_rp100

В относительных числах:

Threads	               1      4      8      16      32      64      128
(32/off)            -0.2%    1%     22%	    73%    114%    114%    126%
(64/off)            -0.1%    4%     22%     75%    112%    125%    135%

select_random_points.lua --random-points=100

Подробные числа всех запусков на perro

Вы можете найти абсолютные и относительные числа в нашей электронной таблице OpenOffice.org здесь: SysBench v0.5 select_random_points на perro

Используемая таблица и запрос

Определение таблицы:

CREATE TABLE sbtest (
  id  int unsigned NOT NULL AUTO_INCREMENT,
  k   int unsigned NOT NULL DEFAULT '0',
  c   char(120) NOT NULL DEFAULT '',
  pad char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (id),
  KEY k (k)
) ENGINE=MyISAM 

Используемый запрос:

SELECT id, k, c, pad
    FROM sbtest
    WHERE k IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

Параметры ? были заменены случайными числами при запуске теста SysBench. Мы использовали 10, 50 и 100 случайных точек в наших тестах.

Мы вставили 20 миллионов строк с помощью случайных данных, что дало нам размер файла данных и индекса:

3.6G    sbtest.MYD
313M    sbtest.MYI

Мы выбрали размер буфера ключей, достаточно большой для хранения файла индекса.

Среда тестирования

Источники MariaDB

Мы использовали MariaDB 5.2.2-gamma с следующей версией из нашего репозитория Launchpad Ревизия #2878

revno: 2878
committer: Sergei Golubchik <sergii@pisem.net>
branch nick: 5.2
timestamp: Tue 2010-10-26 07:37:44 +0200
message:
  fixes for windows

Компиляция MariaDB

Мы скомпилировали MariaDB с помощью этой команды:

BUILD/compile-amd64-max

Параметры MariaDB во время выполнения

Мы использовали следующую конфигурацию для запуска MariaDB

MYSQLD_OPTIONS="--no-defaults \
  --datadir=$DATA_DIR \
  --language=./sql/share/english \
  --log-error \
  --key_buffer_size=512M \
  --max_connections=256 \
  --query_cache_size=0 \
  --query_cache_type=0 \
  --skip-grant-tables \
  --socket=$MY_SOCKET \
  --table_open_cache=512 \
  --thread_cache=512 \
  --key_cache_segments=0 \ # 0 | 32 | 64
  --tmpdir=$TEMP_DIR"

Параметры SysBench v0.5 select_random_points.lua

Мы запустили тест SysBench v0.5 select_random_points.lua со следующими параметрами:

# 20 million rows.
TABLE_SIZE=20000000

SYSBENCH_OPTIONS="--oltp-table-size=$TABLE_SIZE \
  --max-requests=0 \
  --mysql-table-engine=MyISAM \
  --mysql-user=root \
  --mysql-engine-trx=no \
  --myisam-max-rows=50000000 \
  --rand-seed=303"

Мы тестировали с возрастающим количеством одновременных пользователей со временем разогрева 8 минут и временем выполнения 20 минут:

NUM_THREADS="1 4 8 16 32 64 128"
...
  --num-threads=$THREADS

Мы также тестировали возрастающее количество случайных точек:

# Default option is --random-points=10.
SYSBENCH_TESTS[0]="select_random_points.lua"
SYSBENCH_TESTS[1]="select_random_points.lua --random-points=50"
SYSBENCH_TESTS[2]="select_random_points.lua --random-points=100"

Параметры ядра

IO планировщик

Для оптимальной производительности ввода-вывода при работе с базой данных мы используем планировщик noop. Вы можете проверить настройки планировщика с помощью:

cat /sys/block/${DEVICE}/queue/scheduler

Например, вывод должен выглядеть так:

cat /sys/block/sda/queue/scheduler
[noop] deadline cfq

Подробные заметки о планировщиках Linux можно найти здесь: Планировщики Linux в бенчмарке TPCC.

Пределы открытых файлов

Большое количество одновременных подключений может привести к превышению предела открытых файлов на вашей системе. На большинстве систем Linux предел открытых файлов составляет 1024, чего может быть недостаточно. Установите предел открытых файлов выше, отредактировав

$EDITOR /etc/security/limits.conf

и добавив строку, например

#ftp             hard    nproc           0
#@student        -       maxlogins       4
*                -       nofile          16384

# End of file

Ваш ulimit -a вывод после этого должен выглядеть так:

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15975
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 1744200
open files                      (-n) 16384

Используемые машины для тестирования

perro

# OS: openSUSE 11.1 (x86_64)
# Platform: x86_64
# CPU: Quad-core Intel @ 3.20GHz: 4 CPUs
# RAM: 2GB
# Disk(s): 2 x ST31000528AS S-ATA as software RAID 0

pitbull

# OS: Ubuntu 10.10
# Platform: x86_64
# CPU: Two-socket x hexa-core Intel Xeon X5660 @ 2.80GHz. With hyperthreading: 24CPUs
# RAM: 28GB
# Disk(s): 1 x ST3500320NS S-ATA
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержание не просматривается заранее компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают мнения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/segmented-key-cache-performance/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API