Percona Server –    MySQL на стероидах           Евгений Степченко    Evgeniy.Stepchenko@percona.com1
История InnoDB★ 1994 – начало разработки★ 1999 – рабочая версия InnoDB★ 2001 – Первая alpha интегрированная в MySQL★ ...  ...
Ограничения InnoDB (в MySQL 5.0)Slow Crash Recovery Process      Not enough diagnostic            Only one buffer pool. No...
InnoDB Limitations (as at 5.0)Can’t move tables between        Slow statistics not available in   Replication is not trans...
InnoDB Limitations (as at 5.0)InnoDB pages have checksums          Further improvements possible    No memory manager or- ...
Что такое InnoDB plugin?★ До недавнего времени изменения версий  InnoDB были связаны с релизами  MySQL.★ MySQL 5.1’s plugg...
Преимущества InnoDB plugin★   Новые возможности    ✦   CPU scalability, fast index creation, buffer pool tablescan        ...
Зачем я всѐ это рассказывал?★   Percona Server = MySQL + XtraDB + XtraBackup★   XtraDB основан на InnoDB plugin    ✦    На...
Release Model★ Частые релизы. Постепенные изменения в  функциональности / исправления★ Перенос на новые версии MySQL   Нап...
Итак, что же изменилось?           Большинство вносимых изменений делятся на две категории ★   Улучшения производительност...
УЛУЧШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ11
Некоторые улучшения бесплатны★    Улучшения InnoDB plugin ✦   Fast Index Creation ✦   IO scalability ✦   CPU Scalability12
Улучшенная масштабируемость и                    производительность★    Дополнительно к тому, что уже доступно в     плаги...
Управление Insert Buffer★       InnoDB    ✦    insert buffer - замечательная функция InnoDB            • Для не уникальных...
Быстрое восстановление★    InnoDB ✦   Однопоточное ✦   Зависит от размера --innodb_log_file_size         • Не линейно - 25...
Adaptive Checkpointing★    Аналогично опции InnoDB plugin, но с двумя     новыми алгоритмами:     ✦   innodb_adaptive_chec...
Adaptive Checkpointing★    Картинка для наглядности17   Source: http://www.mysqlperformanceblog.com/2008/11/13/adaptive-ch...
Adaptive Checkpointing★    Ещё одна картинка     Source: http://www.mysqlperformanceblog.com/2009/09/15/which-adaptive-sho...
Undo Slots★    InnoDB ✦       Количество undo slots ограничено 1024.     ✦   Это означает, что количество открытых транзак...
Rollback Segments★    В XtraDB можно использовать несколько Rollback     Segments     ✦   Каждый из них содержит undo slot...
Быстрые контрольные суммы★    InnoDB ✦   Алгоритм расчѐта контрольной суммы медленнее, чем     мог бы быть★    XtraDB ✦   ...
Изменение размера страницы★    XtraDB поддерживает разные размеры страниц -     4K, 8K, 16K.22    Warning: This is binary ...
Расширения Query Cache★       query_cache_with_comments    ✦    По умолчанию это разные запросы:            • /* first que...
УЛУЧШЕНИЯ ЭКСПЛУАТАЦИОННЫХ СВОЙСТВ24
Содержимое Buffer PoolПозволяет оценить как наши таблицы помещаются в buffer pool1.    mysql> SELECT d.*,round(100*cnt*163...
Сохранение Buffer Pool★    Выгрузить содержимое BP в файл ib_lru_dump     можно командой:     ✦   SELECT * FROM         in...
Сохранение Buffer Pool★    Подробности:     ✦   http://www.mysqlperformanceblog.com/2010/01/20/xtradb-         feature-sav...
Сохранение BP в Shared Memory★    Сохраняет BP в разделяемой памяти между     перезагрузками сервера ✦   Опция innodb_buff...
Импорт/Экспорт таблиц★    InnoDB ✦   Даже при использовании --innodb-file-per-table вы не     можете сделать резервную коп...
Улучшенная диагностика★    SHOW ENGINE INNODB STATUS ✦   Показывает намного больше информации ✦   Улучшено форматирование ...
The End                      Questions?★    Percona Server     http://www.percona.com/software/percona-server/★    XtraBac...
Upcoming SlideShare
Loading in …5
×

Percona server - MySQL on Steroids Devpoint

683 views
579 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
683
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Percona server - MySQL on Steroids Devpoint

  1. 1. Percona Server – MySQL на стероидах Евгений Степченко Evgeniy.Stepchenko@percona.com1
  2. 2. История InnoDB★ 1994 – начало разработки★ 1999 – рабочая версия InnoDB★ 2001 – Первая alpha интегрированная в MySQL★ ... Длинные периоды★ 2005 - MySQL 5.0 между релизами 5.0 и 5.1★ ...★ 2008 - Анонсирован InnoDB Plugin★ 2010 - Анонсирован InnoDB Plugin 1.1 (включен в MySQL 5.5)2
  3. 3. Ограничения InnoDB (в MySQL 5.0)Slow Crash Recovery Process Not enough diagnostic Only one buffer pool. No QoS information, particularly around of mapping tables to buffer pool threads that write data/sync or pinning indexes/content to prevent eviction.Poor Multi CPU Scalability Broken group commit support No way to see contents of buffer pool.No way to limit the memory No features for warming big The adaptive hash does notresident data dictionary size. buffer pools on server start. suit all workloads.Not able to take advantage of a No real ability to configure Page flushing is not aggressivemore powerful IO system, that tablespaces - just two limited enough, early enough leadingcan sustain multiple concurrent options. up to checkpoints.threads.Insert buffer shows weakness - IO read ahead assumptions Limited number of undocan be up to 1/2 the buffer pool have no configuration options / segments limits concurrentsize - and doesn’t make active ability to disable. transactions to 1024.attempts to be more aggressiveat contracting when reachinglimit.3 = доступен патч в той или иной форме
  4. 4. InnoDB Limitations (as at 5.0)Can’t move tables between Slow statistics not available in Replication is not transactional.servers. slow query log.No way to force checkpoint Can’t cluster on an index other Opening tables is serialized by than Primary key. LOCK_Open mutex.No way to freeze auto_increment scalability is No parallel query executioncheckpoint/flushing activity. very bad. plans.Adding files to a table space Statistics sampling is done by Index statistics don’t persist onmust be done via configuration 10 random dives - limited restart and are recalculatedfile not online. control over resampling each time.Can’t change page sizes Diagnostics - Can’t see a Can’t control page fill factor.without recompile. Not history of deadlocks.possible to have multiple pagesizes.4 = доступен патч в той или иной форме
  5. 5. InnoDB Limitations (as at 5.0)InnoDB pages have checksums Further improvements possible No memory manager or- a very helpful feature to detect to IO. InnoDB’s emulated async effective way to limit memorysilent corruption. The problem IO may not be required. Newer use. This is both true foris there’s 2 checksums and system calls like MySQL and the overheadthere may be benefit from being fallocate/fadvise may lead to consumed with InnoDB metaable to change the algorithm. improvements. data.Insert buffer does not assist for Dropping an index recreates Indexes can not be addeddelete operations. the whole table. onlineInnoDB per page There are no features to There is no support formemory/storage overhead compress/pack indexes. additional index algorithmscould probably be reduced. (such as hash or bitmap)5 = доступен патч в той или иной форме.
  6. 6. Что такое InnoDB plugin?★ До недавнего времени изменения версий InnoDB были связаны с релизами MySQL.★ MySQL 5.1’s pluggable storage engine API ✦ Разработчики получили свободу для реализации изменений независимо от MySQL.★ Важно: по умолчанию в MySQL 5.1 используется не InnoDB plugin ✦ Но плагин включен в поставку и объявлен GA6
  7. 7. Преимущества InnoDB plugin★ Новые возможности ✦ CPU scalability, fast index creation, buffer pool tablescan resistance, fast crash recovery, ...★ Главное направление развития InnoDB.7
  8. 8. Зачем я всѐ это рассказывал?★ Percona Server = MySQL + XtraDB + XtraBackup★ XtraDB основан на InnoDB plugin ✦ Наследует все его функции★ «Основан» не означает, что было сделано одно ответвление в прошлом ✦ Percona постоянно переносит все свои расширения на новые версии InnoDB plugin ✦ По умолчанию XtraDB не изменяет формат хранения данных. Вы можете переключаться между XtraDB и InnoDB по нескольку раз в день★ Percona Server и XtraDB выпускаются под лицензией GPL8
  9. 9. Release Model★ Частые релизы. Постепенные изменения в функциональности / исправления★ Перенос на новые версии MySQL Например: ✦ Percona-Server-server-51-5.1.50-rel11.4.111.rhel5.x86_64.rpm • 51 – базовая версия MySQL • 5.1.50 – релиз MySQL, на котором основан данный релиз Percona Server • 11.4.111 – версия и номер сборки XtraDB★ Новые релизы примерно каждые 1-2 месяца9
  10. 10. Итак, что же изменилось? Большинство вносимых изменений делятся на две категории ★ Улучшения производительности ★ Улучшения эксплуатационных ✦ Improved Buffer Pool Scalability свойств – диагностика, настройка ✦ Faster Crash Recovery ✦ Show contents of the buffer pool ✦ Separate purge thread ✦ Import / export of innodb_file_per_table ✦ Insert buffer controls tables ✦ Data dictionary memory consumption controls ✦ Import / export of buffer pool contents Improved IO Path + adaptive checkpointing ✦ ✦ Transactional Replication ✦ Faster page checksums* ✦ Better handling of corrupted tables ✦ Support for different page sizes* ✦ Improved Rollback Segment Scalability* ✦ Increased number of undo slots* * - изменения в формате данных, несовместимо с InnoDB plugin10
  11. 11. УЛУЧШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ11
  12. 12. Некоторые улучшения бесплатны★ Улучшения InnoDB plugin ✦ Fast Index Creation ✦ IO scalability ✦ CPU Scalability12
  13. 13. Улучшенная масштабируемость и производительность★ Дополнительно к тому, что уже доступно в плагине: ✦ Разделение buffer pool mutex: • Flush list mutex • LRU mutex • Free mutex • hash mutex ✦ Improved IO path • Возможность управлять различными параметрами подсистемы ввода/вывода – Количество фоновых потоков – Поведение read ahead –…13
  14. 14. Управление Insert Buffer★ InnoDB ✦ insert buffer - замечательная функция InnoDB • Для не уникальных индексов операция вставки может ускоряться в 15 раз! ✦ Проблема в том, что при заполнении буфера, он становится бесполезным ✦ Нет возможности управлять максимальным размером★ XtraDB ✦ --innodb_ibuf_max_size – в байтах ✦ --innodb_ibuf_accel_rate – по умолчанию 100%. Позволяет управлять процессом слияния буфера в index tree ✦ Немного подробностей – http://www.mysqlperformanceblog.com/2009/01/13/some-little- known-facts-about-innodb-insert-buffer/14
  15. 15. Быстрое восстановление★ InnoDB ✦ Однопоточное ✦ Зависит от размера --innodb_log_file_size • Не линейно - 256M может быть намного хуже 128M, а значения > 512M означают «возьмите отгул».★ XtraDB ✦ По нашим тестам, ускорение до 10 раз ✦ Должно быть безопасно, но по умолчанию не включено ✦ Включается опцией --innodb_fast_recovery=1 Now available in Plugin15
  16. 16. Adaptive Checkpointing★ Аналогично опции InnoDB plugin, но с двумя новыми алгоритмами: ✦ innodb_adaptive_checkpoint = 1 - “Reflex” ✦ innodb_adaptive_checkpoint = 2 - “Estimate”★ Сравнение этих алгоритмов в нашем блоге: ✦ http://www.mysqlperformanceblog.com/2009/09/15/which- adaptive-should-we-use/ http://www.mysqlperformanceblog.com/2009/12/04/effect-of-16 adaptive_flushing/
  17. 17. Adaptive Checkpointing★ Картинка для наглядности17 Source: http://www.mysqlperformanceblog.com/2008/11/13/adaptive-checkpointing/
  18. 18. Adaptive Checkpointing★ Ещё одна картинка Source: http://www.mysqlperformanceblog.com/2009/09/15/which-adaptive-should-we-use/18
  19. 19. Undo Slots★ InnoDB ✦ Количество undo slots ограничено 1024. ✦ Это означает, что количество открытых транзакций не может быть больше 1023 ✦ Некоторые запросы требуют 2 слота.★ XtraDB ✦ Используя опцию --innodb_extra_undoslots=1 можно расширить количество undo slots до 4072 Warning: This is binary format incompatible!19
  20. 20. Rollback Segments★ В XtraDB можно использовать несколько Rollback Segments ✦ Каждый из них содержит undo slots★ Опция --innodb-extra-rsegments=N★ Дополнительный эффект – уменьшение взаимных блокировок на rollback segmenthttp://www.percona.com/docs/wiki/percona-xtradb:patch:innodb_extra_rseghttp://www.mysqlperformanceblog.com/2009/10/14/tuning-for-heavy-writing-workloads/20 Warning: This is binary format incompatible!
  21. 21. Быстрые контрольные суммы★ InnoDB ✦ Алгоритм расчѐта контрольной суммы медленнее, чем мог бы быть★ XtraDB ✦ Есть опция для использования нового, быстрого алгоритма расчѐта контрольной суммы Warning: This is binary format incompatible!21
  22. 22. Изменение размера страницы★ XtraDB поддерживает разные размеры страниц - 4K, 8K, 16K.22 Warning: This is binary format incompatible!
  23. 23. Расширения Query Cache★ query_cache_with_comments ✦ По умолчанию это разные запросы: • /* first query */ select name from users where users.name like Bob%; • /* retry search */ select name from users where users.name like Bob%; ✦ Если query_cache_with_comments = ON, сервер будет считать запросы идентичными★ query_cache_totally_disable ✦ Позволяет полностью отключить кэш при старте сервера --query_cache_type=OFF★ http://www.mysqlperformanceblog.com/2010/09/10/cache-miss-storm/23
  24. 24. УЛУЧШЕНИЯ ЭКСПЛУАТАЦИОННЫХ СВОЙСТВ24
  25. 25. Содержимое Buffer PoolПозволяет оценить как наши таблицы помещаются в buffer pool1. mysql> SELECT d.*,round(100*cnt*16384/(data_length+index_length),2) fit FROM (SELECT schema_name,table_name,count(*) cnt,sum(dirty),sum(hashed) FROM INNODB_BUFFER_POOL_PAGES_INDEX GROUP BY schema_name,table_name ORDER BY cnt DESC LIMIT 20) d JOIN TABLES ON (TABLES.table_schema=d.schema_name AND TABLES.table_name=d.table_name);2. +-------------+---------------------+---------+------------+-------------+--------+3. | schema_name | table_name | cnt | sum(dirty) | sum(hashed) | fit |4. +-------------+---------------------+---------+------------+-------------+--------+5. | db | table1 | 1699133 | 13296 | 385841 | 87.49 |6. | db | table2 | 1173272 | 17399 | 11099 | 98.42 |7. | db | table3 | 916641 | 7849 | 15316 | 94.77 |8. | db | table4 | 86999 | 1555 | 75554 | 87.42 |9. | db | table5 | 32701 | 7997 | 30082 | 91.61 |10. | db | table6 | 31990 | 4495 | 25681 | 102.97 |11. | db | table7 | 1 | 0 | 0 | 100.00 |12. +-------------+---------------------+---------+------------+-------------+--------+13. 7 rows IN SET (26.45 sec)25
  26. 26. Сохранение Buffer Pool★ Выгрузить содержимое BP в файл ib_lru_dump можно командой: ✦ SELECT * FROM information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;★ Восстановить ib_lru_dump: ✦ SELECT * FROM information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_RESTORE*/; Note: Not the actual contents - it takes 8 bytes to remember26 the address of a 16K page.
  27. 27. Сохранение Buffer Pool★ Подробности: ✦ http://www.mysqlperformanceblog.com/2010/01/20/xtradb- feature-save-restore-buffer-pool/27
  28. 28. Сохранение BP в Shared Memory★ Сохраняет BP в разделяемой памяти между перезагрузками сервера ✦ Опция innodb_buffer_pool_shm_key ✦ Позволяет избежать долгого процесса сохранения/загрузки BP на диск28
  29. 29. Импорт/Экспорт таблиц★ InnoDB ✦ Даже при использовании --innodb-file-per-table вы не можете сделать резервную копию отдельной таблицы★ XtraDB ✦ C новой опцией, --innodb_expand_import=1, это больше не проблема★ Важно: Импорт и экспорт по прежнему надо делать с помощью XtraBackup29
  30. 30. Улучшенная диагностика★ SHOW ENGINE INNODB STATUS ✦ Показывает намного больше информации ✦ Улучшено форматирование при отображении★ Статистика по таблицам/индексам★ Микросекунды в slow log★ Распределение времени выполнения запросов ✦ SELECT * from INFORMATION_SCHEMA.QUERY_RESPONSE_TIME30
  31. 31. The End Questions?★ Percona Server http://www.percona.com/software/percona-server/★ XtraBackup http://www.percona.com/software/percona-xtrabackup/★ Документация http://www.percona.com/software/documentation/★ MySQL Performance Blog http://www.mysqlperformanceblog.com/31

×