SlideShare une entreprise Scribd logo
1  sur  50
MyRocks:
Табличный
Движок для
MySQL
Алексей Майков
Сергей Петруня
• Мотивация
• Тех. Показатели
• Устройство
• Как попробовать
• Особенности
• Мотивация
• Тех. Показатели
• Устройство
• Как попробовать
• Особенности
*MySQL is a registered trademark of Oracle Corporation
MyRocks
Размер базы (GB) (Linkbench)
1172
574
InnoDB RocksDB
Megabytes/s written (Linkbench)
150
70
InnoDB RocksDB
Размер базы (GB) (Prod)
(zlib level1
compression)
1089
525.4
InnoDB RockDB
Terabytes written (Prod)
0
4
8
12
InnoDB 2x RocksDB
Flash GC
Binlog / Relay log
Storage engine
Flash read rates (Prod)
• RocksDB > InnoDB * 1.5
• Flash справляется!
Time
RocksDB (2x)
InnoDB
=> 37 Tb
=> 12 Tb
Cumulative Response Times (Prod)
0
50
100
150
200
250
300
< 15ms < 75ms < 250ms < 1000ms
Kilo-Queries
RocksDB x2
InnoDB
CPU Idle (Prod)
Time
InnoDB
2x RocksDB
100%
0%
80%
50-60%
• Мотивация
• Тех. Показатели
• Устройство
• Как попробовать
• Особенности
Ограниченность InnoDB
• B*-treе
• Страничное хранение
– Изменение = запись
страницы
– Сжатие тоже постраничное
amplification =
Размер на диске
Размер данных
• Read amplification – устраивает
• Write amplification – проблема
• Size amplification – проблема.
1
10
20
1
3
5
10
12
17
20
25
12
Log-Structured Merge (LSM)
MemTableЗапись
Log SST
• Пишем в MemTable+Log
• MemTable → Sorted String Table
MemTable
Log-Structured Merge (LSM)
MemTableЗапись
Log SST
• Пишем в MemTable+Log
• MemTable → Sorted String Table
– Линейная запись
– Плотно, с компрессией.
MemTable
Log-Structured Merge (LSM)
MemTableЗапись
Log SST
• Пишем в MemTable+Log
• MemTable → Sorted String Table
MemTable
Log-Structured Merge (LSM)
MemTableЗапись
Log SST
• Пишем в MemTable+Log
• MemTable → Sorted String Table
• MemTable #2 → Sorted String Table #2
• ...
SST . . .
Чтение данных в LSM
MemTable Чтение
Log SST SST
. . .
• Чтение = слияние данных
• Read amplification ↑↑ 
SST
Compaction – слияние SST
SST SST . . .Цели
• Уменьшение числа
SST-файлов
скорость чтения ↑
• Удаление старых версий
записей размер ↓
SST
SST
Метод
• Слияние сортированных файлов
– Пишем последовательно
– Пишем плотно
– Хорошее сжатие.
Как делать compaction
• Избегать крайностей
– Редко: слишком много SST
– Часто: большой write amplification
• Работать эффективно
– Сливать файлы похожих размеров
– Сливать файлы с разными версиями
одной записи
• Есть много алгоритмов
– Size-tiered
– Leveled
– Date-tiered
– FIFO
a-b c-g f-k l-q za-b a-b
Leveled compaction
a-c a-f
. . . . . . . . . . . .
b-gL0
L1 a-e f-i j-n o-z
L2 h-k o-r s-w
L5
MemTable
x-z
N*5 mb
50 mb
500 mba-c e-g l-n
g-h n-q t-u x-yd-e j-ka-b
a-ba-b c-g f-k l-q za-b
Leveled compaction
a-c a-f
. . . . . . . . . . . .
b-gL0
L1 a-e f-i j-n o-z
L2 h-k o-r s-w
L5
MemTable
x-z
N*5 mb
50 mb
500 mba-c e-g l-n
g-h n-q t-u x-yd-e j-ka-b
MemTable
read(key) 5 + #L0 операций
a-b c-g f-k l-q za-b a-b
Leveled compaction
a-c a-f
. . . . . . . . . . . .
b-gL0
L1 a-e f-i j-n o-z
L2 h-k o-r s-w
L5
MemTable
x-z
N*5 mb
50 mb
500 mba-c e-g l-n
g-h n-q t-u x-yd-e j-ka-b
a-b c-g f-k l-q za-b a-b
Leveled compaction
a-c a-f
. . . . . . . . . . . .
b-gL0
L1 a-e f-i j-n o-z
L2 h-k o-r s-w
L5
MemTable
x-z
N*5 mb
50 mb
500 mba-c e-g l-n
g-h n-q t-u x-yd-e j-ka-b
a-b c-g f-k l-q za-b a-b
Leveled compaction
a-c a-f
. . . . . . . . . . . .
b-gL0
L1 a-e f-i j-n o-z
L2 h-k o-r s-w
L5
MemTable
x-z
N*5 mb
50 mb
500 mba-c e-g l-n
g-h n-q t-u x-yd-e j-ka-b
Leveled compaction - выводы
• read amp. <= #L0+5
• Новые изменения сливаются
друг с другом
• write amp. <= 5*level_fanout +1
• size amp. ~ 1.11
• И мигрируют в старые уровни.
Log-Structured Merge – выводы
• Уменьшает write amplification
меньше операций записи
• Уменьшает size amplification
размер БД на диске меньше
• Увеличивает read amplification
читаем из нескольких SST.
LevelDB – реализация LSM
+ Встраиваемая библиотека на С++
+ Key/value store на LSM
+ Level-ed compaction
+ Open Source
+ Разработана в Google для Chrome
– Не для серверных нагрузок.
• Форкнули LevelDB
• Добавили
– Multi-threaded Compaction
– Multi-threaded MemTable flush
– Throttling, если compaction не
успевает
– Prefix bloom filter для range scans
– Column Families
– И т д.
http://rocksdb.org
• Facebook
• LinkedIn
• Yahoo
• CockroachDB
• DNANexus
• …
Применение
Ограничения RocksDB
• Это key/value store
– Put(key, value), Delete(key)
– Write(WriteBatch)
• Нет
– Отдельных таблиц
– Типов данных
– Вторичных индексов
– ...
create table tbl (
pk int primary key,
...
) engine=RocksDB;
MySQL* + MyRocks=
• Табличный движок для MySQL
• Данные хранятся в RocksDB
• Конфигурация и диагностика
RocksDB через MySQL.
MyRocks готов к тестам
• SQL-семантика
• Транзакционный
– REPEATABLE READ
– READ COMMITTED
• Поддержка всех типов данных
• Поддержка индексов
– PRIMARY/UNIQUE/Secondary
– Поиск по всем видам условий
– Статистика для оптимизатора
• Можно пробовать приложения
• Мотивация
• Тех. Показатели
• Устройство
• Как попробовать
• Особенности
Как попробовать
• https://github.com/facebook/mysql-5.6/
• В будущем - в MariaDB (?)
• Присылайте вопросы, баги,
отзывы, идеи, патчи
• Обсуждение
– https://github.com/facebook/mysql-
5.6/issues/
– http://facebook.com/groups/rocksdb-dev
Настройки LSM
MemTable
Level 0
Level 1
Level 2
Level 3
File File
File File File
File File File File
File File File File File
LOG
(WAL)
Compaction
Flush
show engine rocksdb status;
https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide
Настройки MyRocks
set global rocksdb_default_cf_options
='write_buffer_size=12m;target_file_siz
e_base=1m;max_bytes_for_level_multiplie
r=10'
• Настройка default column family
• Другие column families
• > 84 rocksdb_* переменных
set global rocksdb_override_cf_options
• Мотивация
• Тех. Показатели
• Устройство
• Как попробовать
• Особенности
Особенности SQL на LSM
• myrockshotbackup
• Сканирование в обратную
сторону.
• Bloom filters для range
scans
• Tombstones после массового
DELETE
myrockshotbackup
• Local server:
set rocksdb_create_checkpoint=
'/data/mysql/backup'
myrockshotbackup | ssh "tar zxf-"
• Remote:
myrockshotbackup –-move_back
• Create checkpoint
Сканирование в обратную сторону
• Проблема
– Большой размер блока
– Компрессия
– Читать с конца нельзя
• Решение: Column Family c хранением данных в
обратном порядке
select *
from user_messages
where user_id=1234
order by date desc limit 10
create table user_messages (
...
KEY key1(user_id,date) comment 'rev:cf_name'
Bloom filters для range scans
• Читаем из многих источников
• tbl.key=c1
• Во многих SST
ключа с1 нет
• Bloom Filter в
каждой SST.
MemTable Чтение
SST SST SST
Bloom filters для range scans
MemTable Чтение
SST SST SST
INDEX ON t1(col1, col2, …)
index_nr col1 col2 …
• tbl.key>10 AND tbl.key<20
• Надо проверять
все SST
• И Bloom Filter
не применим 
• Bloom filter на
префикс:
Tombstones после DELETE
• DELETE создает tombstones
delete from messages
where date='2015-11-01'
select * from messages
where date>='2015-11-01'
• Решение
– Детектировать это при записи в SST
– Немедленно назначать compaction.
• При чтении их пропускают
В MyRocks нет всех фич
• Ограничения
– PRIMARY KEY обязателен
– ‘index only’ не для всех типов данных
– ALTER TABLE медленный
– Размер транзакции ограничен
– Нет crash-safe master
(пользуемся semi-sync)
• Это временно
– Дайте нам знать, что нужно в первую
очередь.
Выводы
• Табличный движок MyRocks основан на
RocksDB
• Приносит LSM серверного уровня в MySQL
• Решает проблемы write-heavy загрузки
– Меньше места на диске
– Меньше операций записи (износ SSD)
– «В 2 раза меньше InnoDB по тому и другому, без
замедления чтения»
• Состояние
– Интенсивная разработка (не все сценарии
покрыты)
– Но пробовать уже можно
– Open Source: приглашаем к сотрудничеству.
Ссылки
• RocksDB Storage Engine for MySQL and MongoDB,
Igor Canadi
https://www.percona.com/live/europe-amsterdam-
2015/sessions/rocksdb-storage-engine-mysql-and-
mongodb
• MySQL on RocksDB (MyRocks), Herman Lee
https://www.percona.com/live/europe-amsterdam-
2015/sessions/mysql-rocksdb-myrocks
MyRocks
+
MySQL
+ MySQL = MyRocks

Contenu connexe

Tendances

Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Ontico
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupMail.ru Group
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Ontico
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)Ontico
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Ontico
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandraodnoklassniki.ru
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 

Tendances (20)

Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandra
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 

En vedette

Charla DifusióN Agronegocios
Charla DifusióN AgronegociosCharla DifusióN Agronegocios
Charla DifusióN Agronegociosroxdb
 
New features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersNew features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersSergey Petrunya
 
Эволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBЭволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBSergey Petrunya
 
Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)Ontico
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Mail.ru Group
 
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Ontico
 
Tratamento Facial - Linha NAT SKIN
Tratamento Facial - Linha NAT SKINTratamento Facial - Linha NAT SKIN
Tratamento Facial - Linha NAT SKINTatiana Bessa
 
Os 10 mais vendidos
Os 10 mais vendidosOs 10 mais vendidos
Os 10 mais vendidoserasmohinode
 
Tratamentos pele com acne adolescentes e adultos
Tratamentos pele com acne adolescentes e adultosTratamentos pele com acne adolescentes e adultos
Tratamentos pele com acne adolescentes e adultosMazé Inácio
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)Ontico
 
ZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONAleksander Alekseev
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахAleksander Alekseev
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевAleksander Alekseev
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевНовые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевAleksander Alekseev
 
Doctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHPDoctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHPJonathan Wage
 

En vedette (20)

Charla DifusióN Agronegocios
Charla DifusióN AgronegociosCharla DifusióN Agronegocios
Charla DifusióN Agronegocios
 
New features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersNew features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizers
 
Эволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBЭволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDB
 
Cassandra compaction
Cassandra compactionCassandra compaction
Cassandra compaction
 
Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
 
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
 
Tratamento Facial - Linha NAT SKIN
Tratamento Facial - Linha NAT SKINTratamento Facial - Linha NAT SKIN
Tratamento Facial - Linha NAT SKIN
 
Tutorial - Linha Natskin
Tutorial - Linha NatskinTutorial - Linha Natskin
Tutorial - Linha Natskin
 
Produtos Hinode
Produtos HinodeProdutos Hinode
Produtos Hinode
 
Os 10 mais vendidos
Os 10 mais vendidosOs 10 mais vendidos
Os 10 mais vendidos
 
Tratamentos pele com acne adolescentes e adultos
Tratamentos pele com acne adolescentes e adultosTratamentos pele com acne adolescentes e adultos
Tratamentos pele com acne adolescentes e adultos
 
Treinamento - Perfumes
Treinamento - PerfumesTreinamento - Perfumes
Treinamento - Perfumes
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
ZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSON
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр Алексеев
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевНовые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
 
Doctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHPDoctrine 2: Enterprise Persistence Layer for PHP
Doctrine 2: Enterprise Persistence Layer for PHP
 

Similaire à MyRocks: табличный движок для MySQL на основе RocksDB

Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Ontico
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITLeonid Yuriev
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013it-people
 
Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Ontico
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL DatabaseAndrey Akulov
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicVadim Tsesko
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2rit2011
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Igor Brovchenko
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetOntico
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Ontico
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Ontico
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbSergey Petrunya
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceEYevseyeva
 
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Unigine Corp.
 

Similaire à MyRocks: табличный движок для MySQL на основе RocksDB (20)

High Load
High LoadHigh Load
High Load
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
 
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
 
Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL Database
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
Оптимизация high-contention write в PostgreSQL / Александр Коротков, Олег Бар...
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadb
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
 
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
 

Plus de Sergey Petrunya

New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12Sergey Petrunya
 
MariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesMariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesSergey Petrunya
 
Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Sergey Petrunya
 
Improving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesImproving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesSergey Petrunya
 
JSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureJSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureSergey Petrunya
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace WalkthroughSergey Petrunya
 
ANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemSergey Petrunya
 
Optimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesOptimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesSergey Petrunya
 
MariaDB 10.4 - что нового
MariaDB 10.4 - что новогоMariaDB 10.4 - что нового
MariaDB 10.4 - что новогоSergey Petrunya
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performanceSergey Petrunya
 
MariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeMariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeSergey Petrunya
 
Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Sergey Petrunya
 
Lessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkLessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkSergey Petrunya
 
MariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standMariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standSergey Petrunya
 
MyRocks in MariaDB | M18
MyRocks in MariaDB | M18MyRocks in MariaDB | M18
MyRocks in MariaDB | M18Sergey Petrunya
 
New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3Sergey Petrunya
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLSergey Petrunya
 
Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Sergey Petrunya
 

Plus de Sergey Petrunya (20)

New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12
 
MariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesMariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixes
 
Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8
 
Improving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesImproving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimates
 
JSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureJSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger picture
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace Walkthrough
 
ANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gem
 
Optimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesOptimizer features in recent releases of other databases
Optimizer features in recent releases of other databases
 
MariaDB 10.4 - что нового
MariaDB 10.4 - что новогоMariaDB 10.4 - что нового
MariaDB 10.4 - что нового
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performance
 
MariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeMariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit hole
 
Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4
 
Lessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkLessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmark
 
MariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standMariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it stand
 
MyRocks in MariaDB | M18
MyRocks in MariaDB | M18MyRocks in MariaDB | M18
MyRocks in MariaDB | M18
 
New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3
 
MyRocks in MariaDB
MyRocks in MariaDBMyRocks in MariaDB
MyRocks in MariaDB
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQL
 
Say Hello to MyRocks
Say Hello to MyRocksSay Hello to MyRocks
Say Hello to MyRocks
 
Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2
 

MyRocks: табличный движок для MySQL на основе RocksDB

  • 2. • Мотивация • Тех. Показатели • Устройство • Как попробовать • Особенности
  • 3. • Мотивация • Тех. Показатели • Устройство • Как попробовать • Особенности
  • 4. *MySQL is a registered trademark of Oracle Corporation
  • 6. Размер базы (GB) (Linkbench) 1172 574 InnoDB RocksDB
  • 8. Размер базы (GB) (Prod) (zlib level1 compression) 1089 525.4 InnoDB RockDB
  • 9. Terabytes written (Prod) 0 4 8 12 InnoDB 2x RocksDB Flash GC Binlog / Relay log Storage engine
  • 10. Flash read rates (Prod) • RocksDB > InnoDB * 1.5 • Flash справляется! Time RocksDB (2x) InnoDB => 37 Tb => 12 Tb
  • 11. Cumulative Response Times (Prod) 0 50 100 150 200 250 300 < 15ms < 75ms < 250ms < 1000ms Kilo-Queries RocksDB x2 InnoDB
  • 12. CPU Idle (Prod) Time InnoDB 2x RocksDB 100% 0% 80% 50-60%
  • 13. • Мотивация • Тех. Показатели • Устройство • Как попробовать • Особенности
  • 14. Ограниченность InnoDB • B*-treе • Страничное хранение – Изменение = запись страницы – Сжатие тоже постраничное amplification = Размер на диске Размер данных • Read amplification – устраивает • Write amplification – проблема • Size amplification – проблема. 1 10 20 1 3 5 10 12 17 20 25 12
  • 15. Log-Structured Merge (LSM) MemTableЗапись Log SST • Пишем в MemTable+Log • MemTable → Sorted String Table MemTable
  • 16. Log-Structured Merge (LSM) MemTableЗапись Log SST • Пишем в MemTable+Log • MemTable → Sorted String Table – Линейная запись – Плотно, с компрессией. MemTable
  • 17. Log-Structured Merge (LSM) MemTableЗапись Log SST • Пишем в MemTable+Log • MemTable → Sorted String Table MemTable
  • 18. Log-Structured Merge (LSM) MemTableЗапись Log SST • Пишем в MemTable+Log • MemTable → Sorted String Table • MemTable #2 → Sorted String Table #2 • ... SST . . .
  • 19. Чтение данных в LSM MemTable Чтение Log SST SST . . . • Чтение = слияние данных • Read amplification ↑↑  SST
  • 20. Compaction – слияние SST SST SST . . .Цели • Уменьшение числа SST-файлов скорость чтения ↑ • Удаление старых версий записей размер ↓ SST SST Метод • Слияние сортированных файлов – Пишем последовательно – Пишем плотно – Хорошее сжатие.
  • 21. Как делать compaction • Избегать крайностей – Редко: слишком много SST – Часто: большой write amplification • Работать эффективно – Сливать файлы похожих размеров – Сливать файлы с разными версиями одной записи • Есть много алгоритмов – Size-tiered – Leveled – Date-tiered – FIFO
  • 22. a-b c-g f-k l-q za-b a-b Leveled compaction a-c a-f . . . . . . . . . . . . b-gL0 L1 a-e f-i j-n o-z L2 h-k o-r s-w L5 MemTable x-z N*5 mb 50 mb 500 mba-c e-g l-n g-h n-q t-u x-yd-e j-ka-b
  • 23. a-ba-b c-g f-k l-q za-b Leveled compaction a-c a-f . . . . . . . . . . . . b-gL0 L1 a-e f-i j-n o-z L2 h-k o-r s-w L5 MemTable x-z N*5 mb 50 mb 500 mba-c e-g l-n g-h n-q t-u x-yd-e j-ka-b MemTable read(key) 5 + #L0 операций
  • 24. a-b c-g f-k l-q za-b a-b Leveled compaction a-c a-f . . . . . . . . . . . . b-gL0 L1 a-e f-i j-n o-z L2 h-k o-r s-w L5 MemTable x-z N*5 mb 50 mb 500 mba-c e-g l-n g-h n-q t-u x-yd-e j-ka-b
  • 25. a-b c-g f-k l-q za-b a-b Leveled compaction a-c a-f . . . . . . . . . . . . b-gL0 L1 a-e f-i j-n o-z L2 h-k o-r s-w L5 MemTable x-z N*5 mb 50 mb 500 mba-c e-g l-n g-h n-q t-u x-yd-e j-ka-b
  • 26. a-b c-g f-k l-q za-b a-b Leveled compaction a-c a-f . . . . . . . . . . . . b-gL0 L1 a-e f-i j-n o-z L2 h-k o-r s-w L5 MemTable x-z N*5 mb 50 mb 500 mba-c e-g l-n g-h n-q t-u x-yd-e j-ka-b
  • 27. Leveled compaction - выводы • read amp. <= #L0+5 • Новые изменения сливаются друг с другом • write amp. <= 5*level_fanout +1 • size amp. ~ 1.11 • И мигрируют в старые уровни.
  • 28. Log-Structured Merge – выводы • Уменьшает write amplification меньше операций записи • Уменьшает size amplification размер БД на диске меньше • Увеличивает read amplification читаем из нескольких SST.
  • 29. LevelDB – реализация LSM + Встраиваемая библиотека на С++ + Key/value store на LSM + Level-ed compaction + Open Source + Разработана в Google для Chrome – Не для серверных нагрузок.
  • 30. • Форкнули LevelDB • Добавили – Multi-threaded Compaction – Multi-threaded MemTable flush – Throttling, если compaction не успевает – Prefix bloom filter для range scans – Column Families – И т д. http://rocksdb.org
  • 31. • Facebook • LinkedIn • Yahoo • CockroachDB • DNANexus • … Применение
  • 32. Ограничения RocksDB • Это key/value store – Put(key, value), Delete(key) – Write(WriteBatch) • Нет – Отдельных таблиц – Типов данных – Вторичных индексов – ...
  • 33. create table tbl ( pk int primary key, ... ) engine=RocksDB; MySQL* + MyRocks= • Табличный движок для MySQL • Данные хранятся в RocksDB • Конфигурация и диагностика RocksDB через MySQL.
  • 34. MyRocks готов к тестам • SQL-семантика • Транзакционный – REPEATABLE READ – READ COMMITTED • Поддержка всех типов данных • Поддержка индексов – PRIMARY/UNIQUE/Secondary – Поиск по всем видам условий – Статистика для оптимизатора • Можно пробовать приложения
  • 35. • Мотивация • Тех. Показатели • Устройство • Как попробовать • Особенности
  • 36. Как попробовать • https://github.com/facebook/mysql-5.6/ • В будущем - в MariaDB (?) • Присылайте вопросы, баги, отзывы, идеи, патчи • Обсуждение – https://github.com/facebook/mysql- 5.6/issues/ – http://facebook.com/groups/rocksdb-dev
  • 37. Настройки LSM MemTable Level 0 Level 1 Level 2 Level 3 File File File File File File File File File File File File File File LOG (WAL) Compaction Flush show engine rocksdb status; https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide
  • 38. Настройки MyRocks set global rocksdb_default_cf_options ='write_buffer_size=12m;target_file_siz e_base=1m;max_bytes_for_level_multiplie r=10' • Настройка default column family • Другие column families • > 84 rocksdb_* переменных set global rocksdb_override_cf_options
  • 39. • Мотивация • Тех. Показатели • Устройство • Как попробовать • Особенности
  • 40. Особенности SQL на LSM • myrockshotbackup • Сканирование в обратную сторону. • Bloom filters для range scans • Tombstones после массового DELETE
  • 41. myrockshotbackup • Local server: set rocksdb_create_checkpoint= '/data/mysql/backup' myrockshotbackup | ssh "tar zxf-" • Remote: myrockshotbackup –-move_back • Create checkpoint
  • 42. Сканирование в обратную сторону • Проблема – Большой размер блока – Компрессия – Читать с конца нельзя • Решение: Column Family c хранением данных в обратном порядке select * from user_messages where user_id=1234 order by date desc limit 10 create table user_messages ( ... KEY key1(user_id,date) comment 'rev:cf_name'
  • 43. Bloom filters для range scans • Читаем из многих источников • tbl.key=c1 • Во многих SST ключа с1 нет • Bloom Filter в каждой SST. MemTable Чтение SST SST SST
  • 44. Bloom filters для range scans MemTable Чтение SST SST SST INDEX ON t1(col1, col2, …) index_nr col1 col2 … • tbl.key>10 AND tbl.key<20 • Надо проверять все SST • И Bloom Filter не применим  • Bloom filter на префикс:
  • 45. Tombstones после DELETE • DELETE создает tombstones delete from messages where date='2015-11-01' select * from messages where date>='2015-11-01' • Решение – Детектировать это при записи в SST – Немедленно назначать compaction. • При чтении их пропускают
  • 46. В MyRocks нет всех фич • Ограничения – PRIMARY KEY обязателен – ‘index only’ не для всех типов данных – ALTER TABLE медленный – Размер транзакции ограничен – Нет crash-safe master (пользуемся semi-sync) • Это временно – Дайте нам знать, что нужно в первую очередь.
  • 47. Выводы • Табличный движок MyRocks основан на RocksDB • Приносит LSM серверного уровня в MySQL • Решает проблемы write-heavy загрузки – Меньше места на диске – Меньше операций записи (износ SSD) – «В 2 раза меньше InnoDB по тому и другому, без замедления чтения» • Состояние – Интенсивная разработка (не все сценарии покрыты) – Но пробовать уже можно – Open Source: приглашаем к сотрудничеству.
  • 48. Ссылки • RocksDB Storage Engine for MySQL and MongoDB, Igor Canadi https://www.percona.com/live/europe-amsterdam- 2015/sessions/rocksdb-storage-engine-mysql-and- mongodb • MySQL on RocksDB (MyRocks), Herman Lee https://www.percona.com/live/europe-amsterdam- 2015/sessions/mysql-rocksdb-myrocks
  • 50. + MySQL = MyRocks

Notes de l'éditeur

  1. Spinning disks – проблема – ограничение числи операций чтения Flash – отлично решает эту проблема . За те же деньги 80x. В чем проигрывает – на TLC flash – 5x less, MLC - 25x less. MLC – 10,000 write cycles TLC – 1,000 write cycles
  2. (zlib level1 compression)
  3. Important for extending flash duration Two equal instances of RocksDB
  4. Slow query log to capture query times
  5. Blue for InnoDB, Orange for MyRocks. Running at full storage capacity and using all available memory for buffer/cache pools. InnoDB around 80% cpu idle. 2xRocksDB around 50% to 60%
  6. Можно настроить практически все! Размер мемсторе, количество таблиц, размер 0-ого уровня. Размер 1-ого уровня, размер каждого уровня, компрессиию на каждом уровне, размер файлов или количество файлов, количество нитей комрессии, Если менять код – алгоритмы мемсторе, формат данных на диске, интерфейсы с ОС (pfile, mmap, HDFS, etc…), тип кеша Рекомендуемые настройки – дефолтные настройки плохие Цель настроек. Компакция идет всегда. Нужно чтобы не было затыков. Скорость компакции – компромис между read and write amplification 5-6 уровней, разница между уровнями 10-x Включить компрессию на высоких уровнях, но не включать на низких Использовать одну нить для флаш и столько нитей для compaction, сколько CPU