Pull to refresh

Тестирование MySQL: ZFS vs UFS

Reading time 4 min
Views 8.5K
zfsВозникла у меня некоторое время назад нужда в создании мгновенных бекапов базы данных mysql. Желание существовало уже давно, но как-то до сих пор вроде нормально жилось с репликацией и бекапом со slave. Но случаи бывают разные, и возможность снять мгновенный снимок с файловой системы master-сервера может очень сильно облегчить жизнь. Я понял, что нужен мне snapshot. А там где snapshot, там полуавтоматически появляется на горизонте ZFS. Кроме того в ней еще есть некоторые вкусности, которые на данный момент мне вроде и не особо нужны, но в принципе их наличие может значительно скрасить жизнь.

Сам процесс получения снимка файловой системы я пока оставляю в стороне, но пытаюсь получить некоторое представление о ZFS в сравнении с UFS в моих условиях. Недавно я публиковал на хабре перевод материала от John David Duncan. Там описано все достаточно вкусно, но надо пробовать самому.

Я попробовал…


Я не ставил перед собой целью организовать доскональное супердостоверное сравнение ZFS и UFS. К сожалению нет у меня на это ни сил, ни времени. Тем паче оттестировать экспонаты, так чтобы это тестирование удовлетворило всех заинтересованных лиц — убсолютно нереально. У каждого свои условия и свои задачи. А лучше опишу вам мои условия, и использую общедоступные тесты. А выводы пусть каждый сделает сам! Единственно, я бы попросил этими выводами поделиться в комментариях.

Итак, тестовая система: dell r610, 2x intel xeon e5520, 8x2gb ecc ddr3 pc1066, hdd 4x146gb 15000rpm Seagate savvio 15k2, 2x бп 717в, perc 6/I 256mb+bbu.

Диски объединены в RAID5+hotspare

FreeBSD 8.0-RELEASE GENERIC amd64

В качестве теста я прогнал sql-bench из пакета MySQL.

Сервер из портов: mysql-5.1.41.

Помимо файловой системы в тестах я менял конфиги mysql, опять же чтобы их мучительно не сочинять и не расписывать в статье я использовал стандартные из /usr/local/share/mysql:

my-small.cnf
my-huge.cnf
my-innodb-heavy-4G.cnf

Название конфига отражено в заголовках таблиц. Кроме того я потестировал свой конфиг, который является в некоторой степени гибридом из my-huge.cnf+my-innodb-heavy-4G.cnf, возможно не самым эффективным… Для конфигурации my-innodb-heavy-4G.cnf я добавил еще один тест UFS с softupdates.

Тестирование MySQL: ZFS vs UFS


В таблице указано количество выполненных тестов в первом столбце, и количество секунд, затраченное на выполнение набора тестов.

Чтобы было удобнее, анализировать данные, я нескольоко извратился — строчку TOTAL поместил в саммый верх таблицы, а ниже расшифровочка для гурманов.

small huge innodb hybrid
Операция итераций ufs zfs ufs zfs ufs ufs+su zfs ufs zfs
TOTALS 897029 306.00 400.00 160.00 269.00 152.00 133.00 255.00 155.00 262.00
alter_table_add 100 2.00 4.00 2.00 4.00 3.00 3.00 4.00 3.00 4.00
alter_table_drop 91 2.00 4.00 3.00 5.00 3.00 2.00 4.00 3.00 4.00
connect 10000 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00
connect+select_1_row 10000 4.00 5.00 4.00 5.00 5.00 4.00 4.00 4.00 5.00
connect+select_simple 10000 4.00 4.00 3.00 3.00 4.00 4.00 4.00 3.00 4.00
count_distinct 1000 6.00 6.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00
count_distinct_2 1000 8.00 8.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
count_distinct_big 100 2.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
count_distinct_group 1000 7.00 7.00 0.00 0.00 0.00 1.00 0.00 1.00 0.00
count_distinct_group_on_key 1000 6.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
count_distinct_group_on_key_parts 1000 7.00 7.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00
count_distinct_key_prefix 1000 3.00 3.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
count_group_on_key_parts 1000 8.00 9.00 0.00 0.00 0.00 0.00 1.00 0.00 1.00
count_on_key 50000 58.00 66.00 3.00 4.00 3.00 3.00 3.00 5.00 4.00
create+drop 10000 14.00 25.00 15.00 30.00 14.00 10.00 31.00 14.00 34.00
create_MANY_tables 10000 12.00 18.00 12.00 25.00 11.00 10.00 25.00 11.00 24.00
create_index 8 0.00 0.00 1.00 1.00 0.00 0.00 1.00 0.00 1.00
create_key+drop 10000 16.00 68.00 16.00 87.00 16.00 16.00 11.00 17.00 90.00
create_table 31 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
delete_big 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
drop_index 8 1.00 1.00 0.00 0.00 0.00 1.00 1.00 1.00 1.00
drop_table 28 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
drop_table_when_MANY_tables 10000 6.00 3.00 6.00 3.00 6.00 2.00 3.00 7.00 3.00
insert 50768 5.00 6.00 3.00 5.00 4.00 4.00 6.00 4.00 5.00
insert_many_fields 2000 2.00 1.00 2.00 2.00 2.00 2.00 1.00 2.00 2.00
min_max_on_key 70000 8.00 10.00 4.00 6.00 4.00 5.00 4.00 5.00 6.00
select_1_row 100000 8.00 8.00 10.00 10.00 7.00 8.00 8.00 8.00 9.00
select_1_row_cache 100000 7.00 8.00 4.00 4.00 3.00 2.00 2.00 2.00 2.00
select_2_rows 100000 8.00 9.00 11.00 12.00 9.00 9.00 10.00 9.00 10.00
select_big 70 0.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 1.00
select_big_str 10000 2.00 4.00 3.00 4.00 3.00 3.00 3.00 2.00 2.00
select_cache 10000 24.00 24.00 1.00 1.00 0.00 0.00 0.00 0.00 1.00
select_cache2 10000 25.00 24.00 24.00 24.00 25.00 24.00 25.00 25.00 24.00
select_column+column 100000 8.00 8.00 11.00 10.00 8.00 10.00 8.00 7.00 7.00
select_distinct 800 1.00 2.00 1.00 0.00 1.00 1.00 0.00 1.00 0.00
select_group 2800 2.00 3.00 0.00 1.00 0.00 1.00 0.00 0.00 1.00
select_group_when_MANY_tables 10000 1.00 2.00 2.00 3.00 3.00 2.00 4.00 3.00 3.00
select_join 100 0.00 1.00 0.00 0.00 0.00 0.00 0.00 1.00
select_key_prefix_join 100 2.00 1.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00
select_many_fields 2000 5.00 6.00 2.00 2.00 2.00 2.00 3.00 2.00 2.00
select_range 410 22.00 23.00 2.00 2.00 2.00 1.00 2.00 2.00 1.00
select_simple 100000 3.00 5.00 5.00 5.00 4.00 3.00 3.00 5.00 2.00
select_simple_cache 100000 3.00 4.00 4.00 4.00 4.00 2.00 3.00 4.00 3.00
select_simple_join 500 0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00
wisc_benchmark 114 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00


На этом хотелось бы остановиться, но я там выше просил поделиться вашими выводами в комментариях, наверно бы было не честно закончить без собственных выводов :)

А мой вывод такой — на аппаратном рэйде таки ощущаются накладные расходы ZFS, и я, в своих специфических условиях не ломанусь переходить на ZFS, а таки буду пробовать нужные мне снимки на UFS2. Но у меня где-то есть в загашнике сервачек без рейда и с несколькими SATA-дисками, вероятно там то и раскроется потенциал ZFS.
Tags:
Hubs:
+2
Comments 18
Comments Comments 18

Articles