SlideShare a Scribd company logo
За счет чего Tarantool
такой оптимальный
Денис Аникин, технический директор
почтовых и облачных сервисов в Mail.Ru
Group
Что ожидать от этого доклада
• рассказ о конкретике про устройство Tarantool, которая делает его
оптимальным по сравнению с другими СУБД
• упоминание причин, побудивших нас сделать его таким
оптимальным
Чего не стоит ждать от этого доклада
• Holy wars. Все СУБД хороши для своих задач
• Супер новых структур данных и алгоритмов
• Логарифм от N логаримфу от N рознь 
Tarantool хранит копию данных в памяти
В отличие от дисковой базы данных
• нет обращений к диску во время операций чтения
• нет накладных расходов на кэширование и выгрузку страниц
• запись на диск происходит всегда линейно
• линейное чтение snapshot => максимально быстрый старт
Поэтому он быстрее дисковых баз данных
Tarantool RAM
Read
Disk
based
database
Read
DISK
А как же кэш у дисковых баз?
Давайте сравним in-memory Tarantool
Tarantool RAM
Read
И кэш у дисковых баз
Disk
based
database
Yes
Check
cache
Read
from
cache
Read
from disk
Write to
cache
Read
No
Evict old
Почувствуйте разницу!
Tarantool хранит копию данных в памяти
Always in-memory != Cache
А как происходит запись на диск?
А как происходит запись на диск?
RAM
TRANSACTION
LOG
TARANTOOL
QUERIES
UPDATES
UPDATES
Запись на диск – в деталях
TRANSACTION
LOG SO FAR
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
New transactions all apply at the end of the log
Доктор, это не медленно?
TRANSACTION
LOG SO FAR
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
New transactions all apply at the end of the log
Доктор, это не медленно?
TRANSACTION
LOG SO FAR
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
New transactions all apply at the end of the log
HDD – 100Mb/s
SSD - 250Mb/s
Доктор, это не медленно?
TRANSACTION
LOG SO FAR
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
THE NEXT
TRANSACTION
New transactions all apply at the end of the log
HDD – 100Mb/s
SSD - 250Mb/s
При размере транзакции 100 байт
это от 1 mln TPS
А как дисковые базы пишут на диск?
Они делают все, что Tarantool, плюс …
RAM
TRANSACTION
LOG
DISK
DATABASE
QUERIES
UPDATES
UPDATES
… плюс обновляют данные на диске (как?)
… обновляют данные на диске в дереве
BLOCKB-Tree
BLOCK BLOCK BLOCK
BLOCK BLOCK BLOCK BLOCK BLOCK
… обновляют данные на диске в дереве
• Это случайное обращение к диску
• На HDD – это в лучшем случае 100 обращений в секунду
• На SSD – 1000-5000 обращений в секунду
Tarantool. Старт
Tarantool
Read Snapshot
&
log
Tarantool. Старт. Как быстро?
Tarantool
Read Snapshot
&
log
Tarantool. Старт. Довольно быстро
Tarantool
Read Snapshot
&
log
HDD – 100Mb/s
SSD - 250Mb/s
А дисковые базы данных как стартуют?
А дисковые базы данных как стартуют?
• Надо отдать им должное, стартуют почти моментально
А дисковые базы данных как стартуют?
• Надо отдать им должное, стартуют почти моментально
• Но …
А дисковые базы данных как стартуют?
• Надо отдать им должное, стартуют почти моментально
• Но начинают нормально работать после прогрева кэша
А дисковые базы данных как стартуют?
• Надо отдать им должное, стартуют почти моментально
• Но начинают нормально работать после прогрева кэша
• Бывалые DBA знают различные техники прогрева
А дисковые базы данных как стартуют?
• Надо отдать им должное, стартуют почти моментально
• Но начинают нормально работать после прогрева кэша
• Бывалые DBA знают различные техники прогрева
• А как в целом прогревается кэш?
Как прогревается кэш?
Как прогревается кэш?
Disk
based
database
Random read
DISK
User
Как прогревается кэш?
Disk
based
database
Random read
DISK
User Практика Mail.Ru c MySQL – 1-2 Mb/s
Как прогревается кэш?
1-2 Mb/s vs 100-250 Mb/s
Разница в 100 раз!
Как прогревается кэш?
• Tarantool готов к работе гораздо раньше дисковых баз
• И не потому что магия, а потому что in-memory
• Горячие данные сгруппированы, не размазаны по диску
А теперь давайте поговорим о latency
Latency spikes в Mail.Ru по ночам
Каждую ночь latency
вырастала в 1000 раз в
течение минуты
В чем причина?
Ну, явно же не в
нагрузке от
пользователей. Они
спят по ночам обычно

Причина – ночной snapshotting
• snapshotting – это дамп всей базы с целью сжатия лога
• начиная с Tarantool 1.6.6 мы полностью переделали snapshotting
• не затормаживая поток обработки транзакций
• почти без лишних выделений памяти
Почему snapshotting тормозит все?
Потому что fork()
Tarantool
parent
Snapshot by
fork()
DISK
Tarantool
child
Почему fork() – это зло
для snapshotting?
Механизм copy-on-write в fork() вызывает
массовые выделения страниц и копирование
Tarantool
parent
Snapshot by
fork()
DISK
Tarantool
child
Memory Memory
Copy-on-write
А как у других in-memory баз данных?
Tarantool
parent
Snapshot by
fork()
DISK
Tarantool
child
Memory Memory
Copy-on-write
Кстати, Redis делает так же
fork(). Как сделать лучше?
Tarantool
parent
Snapshot by
fork()
DISK
Tarantool
child
Memory Memory
Copy-on-write
Кстати, Redis делает так же
Заменить copy-on-write на собственный
механизм
Tarantool
parent
Snapshot by
fork()
DISK
Tarantool
child
Memory Memory
Copy-on-write
Собственный
механизм
MVCC
• Во время snapshotting изменения делаем копированием
• У каждого элемента несколько версий
• При изменениях создаются новые версии
• Копируем не 4K, а лишь несколько байт
• Не копируем таблицы дескрипторов
Latency spikes пропали. Все работает
быстро. Даже ночью
Узкие места в базе данных
Узкие места в базе данных
• во сколько раз хэш из C++ быстрее индекса в базе данных?
Узкие места в базе данных
• во сколько раз хэш из C++ быстрее индекса в базе данных?
• std::unordered_map – 2 млн. операций в секунду (на 1 ядре)
Узкие места в базе данных
• во сколько раз хэш из C++ быстрее индекса в базе данных?
• std::unordered_map – 2 млн. операций в секунду (на 1 ядре)
• индекс – в лучшем случае 10К операций в секунду (на 1 ядре)
Узкие места в базе данных
• во сколько раз хэш из C++ быстрее индекса в базе данных?
• std::unordered_map – 2 млн. операций в секунду (на 1 ядре)
• индекс – в лучшем случае 10К операций в секунду (на 1 ядре)
• Разница в 100 раз! Почему?
Узкие места в базе данных
• во сколько раз хэш из C++ быстрее индекса в базе данных?
• std::unordered_map – 2 млн. операций в секунду (на 1 ядре)
• индекс – в лучшем случае 10К операций в секунду (на 1 ядре)
• Разница в 100 раз! Почему?
• Системные вызовы!
Откуда системные вызовы?
• Считать запрос из сети (read)
• Заблокировать (mutex)
• Разблокировать (mutex)
• Записать в лог транзакцию (write)
• Записать ответ в сеть (write)
Почему системные вызовы дорогие?
• Скопировать контекст (скопировать сотни байт минимум)
• Войти в режим ядра
• Восстановить контекст (скопировать сотни байт минимум)
• Выйти из режима ядра
Как Tarantool решает эти проблемы?
• Асинхронный протокол – используем сокет параллельно
• Пакетная работа с сетью
• Пакетная работа с диском
• Меньше syscalls, меньше переходов в режим ядра и обратно
Как Tarantool решает эти проблемы?
Clients
REQUEST
Network thread TX Disk thread
REQUEST
RESPONSE
GROUP OF
REQUESTS
PROCESS IN-
MEMORY
BEGIN
LOG GROUP
MARK EACH OF
GROUP
COMMITTED
GROUP OF
RESPONSES
END
LOG GROUP
На сегодня все! 
Что я не рассказал
• Zero copy (почти нет копирований)
• Собственные структуры данных (tree, hash)
• Собственный алокатор
• Однопоточный процессор транзакций – нет накладных расходов
на блокировки
• Параллельность на fibers, а не на threads => меньше
переключений контекста
• И многое другое …
http://sh5.tarantool.org
• В завершение хочу рассказать про нетехнический метод
поддержки оптимальности
• У нас есть специальная система, которая проверяет
производительность по каждому коммиту и по многим
параметрам
Кстати, она, как и весь код Tarantool, открыта
и позволяет нам держать себя в форме 
Вопросы?
• Буду рад ответить на все ваши вопросы
• А также подходите в экспертную зону Tarantool
• Если вопросы останутся после доклада, то не стесняйтесь писать
на support@tarantool.org или на anikin@corp.mail.ru
• Также посетите наш сайт https://tarantool.org
• Или наш твиттер https://twitter.com/TarantoolDB
• Кроме того, мы рады ответить на ваши вопросы в гугловой
группе: https://groups.google.com/forum/#!forum/tarantool
• И на stackoverflow:
https://stackoverflow.com/questions/tagged/tarantool

More Related Content

What's hot

Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
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
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ontico
 
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Ontico
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
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
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 

What's hot (20)

Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
 
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...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 

Similar to За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)

Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013it-people
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
Alekseev hpc day 2011 Kiev
Alekseev hpc day 2011 KievAlekseev hpc day 2011 Kiev
Alekseev hpc day 2011 KievVolodymyr Saviak
 
Mmx cvk-2015
Mmx cvk-2015Mmx cvk-2015
Дедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекамДедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекам
КРОК
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Ontico
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыОбработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаAleksandr Boichenko
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
Anatoly Popov
 
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
Mail.ru Group
 
High Load
High LoadHigh Load
High Load
alexeymaykov
 
Дедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДДедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОД
КРОК
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
Sergey Petrunya
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
it-people
 
Oracle exa2 biz_summit
Oracle exa2 biz_summitOracle exa2 biz_summit
Oracle exa2 biz_summitNick Turunov
 
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
IBS
 

Similar to За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru) (20)

Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
Олег Анастасьев "Ближе к Cassandra". Выступление на Cassandra Conf 2013
 
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)Тестируем производительность распределённых систем, Александр Киров (Parallels)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
 
Alekseev hpc day 2011 Kiev
Alekseev hpc day 2011 KievAlekseev hpc day 2011 Kiev
Alekseev hpc day 2011 Kiev
 
Mmx cvk-2015
Mmx cvk-2015Mmx cvk-2015
Mmx cvk-2015
 
Дедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекамДедупликация. Нет громоздким ленточным библиотекам
Дедупликация. Нет громоздким ленточным библиотекам
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыОбработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
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
 
High Load
High LoadHigh Load
High Load
 
Дедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОДДедупликацию в каждый ЦОД
Дедупликацию в каждый ЦОД
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 
Oracle exa2 biz_summit
Oracle exa2 biz_summitOracle exa2 biz_summit
Oracle exa2 biz_summit
 
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
Максим Исаев, IBS. Практика использования комплекса Veritas NetBackup для мод...
 

More from 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
 

More from 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...
 

За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)

  • 1. За счет чего Tarantool такой оптимальный Денис Аникин, технический директор почтовых и облачных сервисов в Mail.Ru Group
  • 2. Что ожидать от этого доклада • рассказ о конкретике про устройство Tarantool, которая делает его оптимальным по сравнению с другими СУБД • упоминание причин, побудивших нас сделать его таким оптимальным
  • 3. Чего не стоит ждать от этого доклада • Holy wars. Все СУБД хороши для своих задач • Супер новых структур данных и алгоритмов • Логарифм от N логаримфу от N рознь 
  • 4. Tarantool хранит копию данных в памяти В отличие от дисковой базы данных • нет обращений к диску во время операций чтения • нет накладных расходов на кэширование и выгрузку страниц • запись на диск происходит всегда линейно • линейное чтение snapshot => максимально быстрый старт
  • 5. Поэтому он быстрее дисковых баз данных Tarantool RAM Read Disk based database Read DISK
  • 6. А как же кэш у дисковых баз?
  • 7. Давайте сравним in-memory Tarantool Tarantool RAM Read
  • 8. И кэш у дисковых баз Disk based database Yes Check cache Read from cache Read from disk Write to cache Read No Evict old
  • 10. Tarantool хранит копию данных в памяти Always in-memory != Cache
  • 11. А как происходит запись на диск?
  • 12. А как происходит запись на диск? RAM TRANSACTION LOG TARANTOOL QUERIES UPDATES UPDATES
  • 13. Запись на диск – в деталях TRANSACTION LOG SO FAR THE NEXT TRANSACTION THE NEXT TRANSACTION THE NEXT TRANSACTION New transactions all apply at the end of the log
  • 14. Доктор, это не медленно? TRANSACTION LOG SO FAR THE NEXT TRANSACTION THE NEXT TRANSACTION THE NEXT TRANSACTION New transactions all apply at the end of the log
  • 15. Доктор, это не медленно? TRANSACTION LOG SO FAR THE NEXT TRANSACTION THE NEXT TRANSACTION THE NEXT TRANSACTION New transactions all apply at the end of the log HDD – 100Mb/s SSD - 250Mb/s
  • 16. Доктор, это не медленно? TRANSACTION LOG SO FAR THE NEXT TRANSACTION THE NEXT TRANSACTION THE NEXT TRANSACTION New transactions all apply at the end of the log HDD – 100Mb/s SSD - 250Mb/s При размере транзакции 100 байт это от 1 mln TPS
  • 17. А как дисковые базы пишут на диск?
  • 18. Они делают все, что Tarantool, плюс … RAM TRANSACTION LOG DISK DATABASE QUERIES UPDATES UPDATES
  • 19. … плюс обновляют данные на диске (как?)
  • 20. … обновляют данные на диске в дереве BLOCKB-Tree BLOCK BLOCK BLOCK BLOCK BLOCK BLOCK BLOCK BLOCK
  • 21. … обновляют данные на диске в дереве • Это случайное обращение к диску • На HDD – это в лучшем случае 100 обращений в секунду • На SSD – 1000-5000 обращений в секунду
  • 23. Tarantool. Старт. Как быстро? Tarantool Read Snapshot & log
  • 24. Tarantool. Старт. Довольно быстро Tarantool Read Snapshot & log HDD – 100Mb/s SSD - 250Mb/s
  • 25. А дисковые базы данных как стартуют?
  • 26. А дисковые базы данных как стартуют? • Надо отдать им должное, стартуют почти моментально
  • 27. А дисковые базы данных как стартуют? • Надо отдать им должное, стартуют почти моментально • Но …
  • 28. А дисковые базы данных как стартуют? • Надо отдать им должное, стартуют почти моментально • Но начинают нормально работать после прогрева кэша
  • 29. А дисковые базы данных как стартуют? • Надо отдать им должное, стартуют почти моментально • Но начинают нормально работать после прогрева кэша • Бывалые DBA знают различные техники прогрева
  • 30. А дисковые базы данных как стартуют? • Надо отдать им должное, стартуют почти моментально • Но начинают нормально работать после прогрева кэша • Бывалые DBA знают различные техники прогрева • А как в целом прогревается кэш?
  • 33. Как прогревается кэш? Disk based database Random read DISK User Практика Mail.Ru c MySQL – 1-2 Mb/s
  • 34. Как прогревается кэш? 1-2 Mb/s vs 100-250 Mb/s Разница в 100 раз!
  • 35. Как прогревается кэш? • Tarantool готов к работе гораздо раньше дисковых баз • И не потому что магия, а потому что in-memory • Горячие данные сгруппированы, не размазаны по диску
  • 36. А теперь давайте поговорим о latency
  • 37. Latency spikes в Mail.Ru по ночам Каждую ночь latency вырастала в 1000 раз в течение минуты
  • 38. В чем причина? Ну, явно же не в нагрузке от пользователей. Они спят по ночам обычно 
  • 39. Причина – ночной snapshotting • snapshotting – это дамп всей базы с целью сжатия лога • начиная с Tarantool 1.6.6 мы полностью переделали snapshotting • не затормаживая поток обработки транзакций • почти без лишних выделений памяти
  • 41. Потому что fork() Tarantool parent Snapshot by fork() DISK Tarantool child Почему fork() – это зло для snapshotting?
  • 42. Механизм copy-on-write в fork() вызывает массовые выделения страниц и копирование Tarantool parent Snapshot by fork() DISK Tarantool child Memory Memory Copy-on-write
  • 43. А как у других in-memory баз данных? Tarantool parent Snapshot by fork() DISK Tarantool child Memory Memory Copy-on-write Кстати, Redis делает так же
  • 44. fork(). Как сделать лучше? Tarantool parent Snapshot by fork() DISK Tarantool child Memory Memory Copy-on-write Кстати, Redis делает так же
  • 45. Заменить copy-on-write на собственный механизм Tarantool parent Snapshot by fork() DISK Tarantool child Memory Memory Copy-on-write Собственный механизм
  • 46. MVCC • Во время snapshotting изменения делаем копированием • У каждого элемента несколько версий • При изменениях создаются новые версии • Копируем не 4K, а лишь несколько байт • Не копируем таблицы дескрипторов
  • 47.
  • 48. Latency spikes пропали. Все работает быстро. Даже ночью
  • 49. Узкие места в базе данных
  • 50. Узкие места в базе данных • во сколько раз хэш из C++ быстрее индекса в базе данных?
  • 51. Узкие места в базе данных • во сколько раз хэш из C++ быстрее индекса в базе данных? • std::unordered_map – 2 млн. операций в секунду (на 1 ядре)
  • 52. Узкие места в базе данных • во сколько раз хэш из C++ быстрее индекса в базе данных? • std::unordered_map – 2 млн. операций в секунду (на 1 ядре) • индекс – в лучшем случае 10К операций в секунду (на 1 ядре)
  • 53. Узкие места в базе данных • во сколько раз хэш из C++ быстрее индекса в базе данных? • std::unordered_map – 2 млн. операций в секунду (на 1 ядре) • индекс – в лучшем случае 10К операций в секунду (на 1 ядре) • Разница в 100 раз! Почему?
  • 54. Узкие места в базе данных • во сколько раз хэш из C++ быстрее индекса в базе данных? • std::unordered_map – 2 млн. операций в секунду (на 1 ядре) • индекс – в лучшем случае 10К операций в секунду (на 1 ядре) • Разница в 100 раз! Почему? • Системные вызовы!
  • 55. Откуда системные вызовы? • Считать запрос из сети (read) • Заблокировать (mutex) • Разблокировать (mutex) • Записать в лог транзакцию (write) • Записать ответ в сеть (write)
  • 56. Почему системные вызовы дорогие? • Скопировать контекст (скопировать сотни байт минимум) • Войти в режим ядра • Восстановить контекст (скопировать сотни байт минимум) • Выйти из режима ядра
  • 57. Как Tarantool решает эти проблемы? • Асинхронный протокол – используем сокет параллельно • Пакетная работа с сетью • Пакетная работа с диском • Меньше syscalls, меньше переходов в режим ядра и обратно
  • 58. Как Tarantool решает эти проблемы? Clients REQUEST Network thread TX Disk thread REQUEST RESPONSE GROUP OF REQUESTS PROCESS IN- MEMORY BEGIN LOG GROUP MARK EACH OF GROUP COMMITTED GROUP OF RESPONSES END LOG GROUP
  • 60. Что я не рассказал • Zero copy (почти нет копирований) • Собственные структуры данных (tree, hash) • Собственный алокатор • Однопоточный процессор транзакций – нет накладных расходов на блокировки • Параллельность на fibers, а не на threads => меньше переключений контекста • И многое другое …
  • 61. http://sh5.tarantool.org • В завершение хочу рассказать про нетехнический метод поддержки оптимальности • У нас есть специальная система, которая проверяет производительность по каждому коммиту и по многим параметрам
  • 62. Кстати, она, как и весь код Tarantool, открыта и позволяет нам держать себя в форме 
  • 63. Вопросы? • Буду рад ответить на все ваши вопросы • А также подходите в экспертную зону Tarantool • Если вопросы останутся после доклада, то не стесняйтесь писать на support@tarantool.org или на anikin@corp.mail.ru • Также посетите наш сайт https://tarantool.org • Или наш твиттер https://twitter.com/TarantoolDB • Кроме того, мы рады ответить на ваши вопросы в гугловой группе: https://groups.google.com/forum/#!forum/tarantool • И на stackoverflow: https://stackoverflow.com/questions/tagged/tarantool