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

MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, BadooOntico
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Ontico
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Ontico
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
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
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Ontico
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Ontico
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Ontico
 

Tendances (20)

MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
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...
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
 
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 

En vedette

ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)
ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)
ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)Ontico
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Ontico
 
Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Ontico
 
Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)
Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)
Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)Ontico
 
Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...
Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...
Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...Ontico
 
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...Ontico
 
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...Ontico
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at NetflixBrendan Gregg
 

En vedette (10)

MyRocks Deep Dive
MyRocks Deep DiveMyRocks Deep Dive
MyRocks Deep Dive
 
ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)
ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)
ToroDB: scaling PostgreSQL like MongoDB / Álvaro Hernández Tortosa (8Kdata)
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...Understanding and tuning WiredTiger, the new high performance database engine...
Understanding and tuning WiredTiger, the new high performance database engine...
 
Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)
Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)
Ужимай и властвуй алгоритмы компрессии в базах данных / Петр Зайцев (Percona)
 
Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...
Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...
Как мы сделали ровную балансировку нагрузки на фронтенд-кластере / Насретдино...
 
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
 
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
Tarantool: как сэкономить миллион долларов на базе данных на высоконагруженно...
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 

Similaire à MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петруня (MariaDB Corporation Ab)

Практика использования 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
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 
распределенное файловое хранилище (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
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на 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 / Алексей Майков (Facebook) / Сергей Петруня (MariaDB Corporation Ab) (20)

Практика использования 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
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
распределенное файловое хранилище (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
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на 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
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петруня (MariaDB Corporation Ab)

  • 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