SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
Percona Server 5.6
Alexey.Kopytov@percona.com
August 2, 2013
Percona Server?
I расширенная версия (не форк!) MySQL
I последний релиз MySQL + набор расширений
I расширения основаны на запросах от клиентов и
консультантов Percona
I 30,000 - 60,000 загрузок в месяц с percona.com
I скоро в репозиториях Debian (потом Ubuntu)
I http://mirror.yandex.ru/mirrors/percona/
Percona Server?
Фокус разработки:
I прозрачность: дополнительная диагностика и счётчики
I управляемость: функции, облегчающие
администрирование
I производительность
Percona Server -> MySQL 5.6
Функции Percona Server, реализованные в MySQL 5.6:
I InnoDB persistent statistics
I поддержка redo log > 4 GB
I INFORMATION_SCHEMA.INNODB_SYS_* таблицы
I INFORMATION_SCHEMA.BUFFER_POOL
I innodb_page_size
I InnoDB fast page checksums – innodb_checksum_algorithm
в 5.6
I improved InnoDB tablespace import – экспорт таблиц прямо
на сервере в 5.6
I LRU dump/restore –
innodb_buffer_pool_load_at_startup в 5.6
I innodb_dict_size_limit – table_definition_cache в
5.6
Percona Server 5.6
I Релиз: сентябрь (2013)
I Расширения: userstat, расширения slow query log,
corrupt_table_action, kill idle, trx, fake changes,
expand_fast_index_creation, mysqldump
--innodb-optimize-keys, innodb_log_block_size,
innodb_flush_method, trx descriptors, buffer pool mutex
split, adaptive hash index mutex split, dynamic row format в
MEMORY storage engine, патчи для NUMA архитектуры,
enforce storage engine, utility user, поддержка FusionIO
atomic writes, временные таблицы в INFORMATION_SCHEMA,
query cache strip comments, max_statement_time, scalability
metrics plugin, диагностика в SHOW ENGINE INNODB STATUS
Percona Server 5.6
I userstat – PERFORMANCE_SCHEMA не является полной
заменой
Percona Server 5.6
I расширения для slow query log
# User@Host: mailboxer[mailboxer] @ [192.168.10.165]
# Thread_id: 11167745 Schema: board
# Query_time: 1.009400 Lock_time: 0.000190 Rows_sent: 4 R
# Bytes_sent: 278 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_ta
# InnoDB_trx_id: 1500
# QC_Hit: No Full_scan: Yes Full_join: No Tmp_table: No
# Filesort: No Filesort_on_disk: No Merge_passes: 0
# InnoDB_IO_r_ops: 6415 InnoDB_IO_r_bytes: 105103360 Inn
# InnoDB_rec_lock_wait: 0.000000 InnoDB_queue_wait: 0.000
# InnoDB_pages_distinct: 6430
SET timestamp=1346844943;
SELECT id,title,production_year FROM title WHERE title = ’Ba
Percona Server 5.6
I corrupt_table_action
Percona Server 5.6
I kill idle trx
BEGIN
SELECT * FROM t;
SELECT SLEEP(100000000);
. . .
Percona Server 5.6
Fake changes
I быстрый разогрев replication slave “проигрыванием” живой
нагрузки
I читает страницы для INSERT / UPDATE / DELETE, но не
изменяет их
Percona Server 5.6
I expand_fast_index_creation
Percona Server 5.6
I mysqldump --innodb-optimize-keys
Percona Server 5.6
I innodb_log_block_size
Percona Server 5.6
I innodb_flush_method
Percona Server 5.6
I trx descriptors
Percona Server 5.6
Buffer pool mutex split.
I MySQL: глобальный мьютекс
I Percona Server:
I buf_pool_mutex
I LRU_list_mutex
I flush_list_mutex
I page_hash_latch
I free_list_mutex
I zip_free_mutex
I zip_hash_mutex
Percona Server 5.6
Adaptive hash index partitioning
I innodb_adaptive_hash_index_partitions
Percona Server 5.6
I dynamic row format в MEMORY storage engine
CREATE TABLE t (a VARCHAR(255)) ENGINE=MEMORY;
I MySQL: 255+ байтов на запись
I Percona Server: зависит от действительной длины каждой
записи
I Percona Server: поддерживает BLOB/TEXT
Percona Server 5.6
I NUMA патчи
Percona Server 5.6
I enforce storage engine
mysql> select @@enforce_storage_engine;
+--------------------------+
| @@enforce_storage_engine |
+--------------------------+
| innodb |
+--------------------------+
mysql> create table t(a int) engine=myisam;
ERROR 1286 (42000): Unknown storage engine ’MyISAM’
Percona Server 5.6
Utility user:
I может изменять значения системных переменных
I имеет доступ только к тем таблицам, к которым
разрешено в my.cnf
I может создавать/удалять пользователей (если разрешён
доступ к mysql.*)
Percona Server 5.6
поддержка FusionIO atomic writes:
I поддерживает atomic writes API на FusionIO устройствах
I порт из MariaDB
I делает InnoDB doublewrite buffer ненужным
I повышает производильность на запись до 43%
Percona Server 5.6
I временные таблицы в INFORMATION_SCHEMA
Percona Server 5.6
I query cache strip comments
/* comment 1 */ select * from users where name like ’Bob%’;
/* comment 2 */ select * from users where name like ’Bob%’;
Percona Server 5.6
I max_statement_time из Twitter MySQL:
mysql> SET max_statement_time=1000;
mysql> SELECT SLEEP(2);
ERROR: Query execution was interrupted, max_statement_time exceeded
I модификация в Percona Server:
mysql> SET STATEMENT max_statement_time=60000
SELECT * FROM big_table;
ERROR: Query execution was interrupted, max_statement_time exceeded
Percona Server 5.6
Scalability metrics plugin:
I сколько запросов завершилось в интервал времени?
I сколько запросов выполняются сейчас?
I сумма времени выполнения запросов, включая те, которые
ещё выполняются
I общее время, когда сервер выполнял хотя бы один запрос
I реализовано как audit plugin
Percona Server 5.6
I Диагностика в SHOW ENGINE INNODB STATUS: мьютексы,
background threads, insert buffer, adaptive hash index, buffer
pool, redo log, transactions, . . .
Производительность:
I SSD часто требуют иного подхода для чтения/записи
данных
I память (NUMA встречается всё чаще)
I процессоры: больше “лошадиных сил”, но нужно уметь
ими пользоваться
Производительность:
/***********************************************************
Runs an idle loop on CPU. The argument gives the desired
delay in microseconds on 100 MHz Pentium + Visual C++. */
...
/* Semaphore operations in operating systems are slow:
Solaris on a 1993 Sparc takes 3 microseconds (us) for a
lock-unlock pair and Windows NT on a 1995 Pentium takes 20
microseconds for a lock-unlock pair. */
Инструменты:
I PERFORMANCE_SCHEMA в 5.6
+:
I SQL интерфейс
I нет равных по возможностям инструментов
-:
I накладные расходы до 30% (Bug #68413)
I плохо документирована
I иногда требует рестарта сервера
I мало информации по мьютексам
I сложно использовать и настраивать (вспомогательные
утилиты, например http://www.markleith.co.uk/ps_helper/)
Инструменты
INFORMATION_SCHEMA.INNODB_METRICS в 5.6 +:
I дополняет PERFORMANCE_SCHEMA
I низкие накладные расходы
I не требует рестарта
-:
I плохо документирована
I оригинальный способ конфигурации
Инструменты
I OProfile
+:
I callgraph profiling
I annotated profiling
I сравнительно низкий overhead
I доступен на всех системах
I широкий спектр hardware events
–:
I не показывает мьютексы
Инструменты
I perf
+:
I похож на OProfile
I perf top
-:
I показывает только системные мьютексы (pthread)
Инструменты
I Poor Man’s Profiler
I http://poormansprofiler.org/
I Percona Toolkit: wget percona.com/get/pt-pmp
Инструменты
I Poor Man’s Profiler
300 select,os_thread_sleep,srv_LRU_dump_restore_thread,start_th
157 pthread_cond_wait,os_cond_wait,os_event_wait_low,sync_array
147 pthread_cond_wait,os_cond_wait,os_event_wait_low,srv_purge_
139 select,os_thread_sleep,srv_purge_thread,start_thread,clone
104 pthread_cond_wait,os_cond_wait,os_event_wait_low,sync_array
78 ut_delay,mutex_spin_wait,mutex_enter_func,pfs_mutex_enter_f
+:
I доступен всегда и везде
I позволяет получить общую картину быстро с минимальными
усилиями
-:
I высокий overhead
I низкая точность
I нужно знать код, чтобы прочитать
Визуализация:
I dim_stat
I Percona Monitoring Plugins – интеграция Nagios и Cacti
NUMA
Uniform Memory Accessc vs Non-Uniform Memory Access:
NUMA
I всегда есть обращения к “чужой” памяти
NUMA
I память выделяется на текущей ноде по умолчанию
NUMA
I чередование (interleaving) памяти:
# Numactl --interleave all mysqld ...
I interleaving на уровне BIOS – плохо!
NUMA
I файловый кэш тоже мешает:
I решение:
# sysctl -q -w vm.drop_caches=3
NUMA
Linux memory overcommit:
I память выделяется, только когда к ней обращаются
I при инициализации buffer pool нужно сделать memset()
NUMA
I Подробное описание проблем от Jeremy Cole:
http://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-
numa-architecture/
http://blog.jcole.us/2012/04/16/a-brief-update-on-numa-and-
mysql/
Патчи от Twitter в Percona Server 5.5 / 5.6:
I опции mysqld_safe:
[mysqld_save]
numa_interleave=1
flush_caches=1
I опции сервера:
[server]
innodb_buffer_pool_populate=1
Типы нагрузок:
I CPU bound:
I активные данные в памяти
I только чтение
I I/O bound:
I обычно интенсивная запись
CPU-bound
I неэффективная работа с памятью и кэшем процессора
I плохая масштабируемость
I неэффективная реализация примитивов синхронизации
I затор на doublewrite buffer для read-only нагрузок в 5.6!
jemalloc
I масштабируемая реализация malloc()
http://www.canonware.com/jemalloc/
I используется по умолчанию в Firefox, FreeBSD, NetBSD
jemalloc
I поставляется вместе с Percona Server (.tar.gz)
I опция malloc-lib:
[mysqld_save]
malloc-lib=/usr/local/mysql/lib/libjemalloc.so
kernel mutex и trx sys->mutex
I read views:
kernel mutex и trx sys->mutex
I read views:
kernel mutex и trx sys->mutex
I создание read view:
kernel mutex и trx sys->mutex
read-only транзакции в 5.6:
I SELECT + AUTO_COMMIT=1 или START TRANSACTION READ
ONLY
I read-only транзакции не добавляются в trx_list
I нет проблемы, если trx_list пустой (т.е. если нет
других транзакций!)
trx descriptors
trx descriptors
trx descriptors
kernel mutex и trx sys->mutex
Как узнать?
I SHOW ENGINE INNODB STATUS:
--Thread 140370743510784 has waited at trx0trx.c line 1184 f
Mutex at 0x2b0ccc8 ’&kernel_mutex’, lock var 1
...
I PMP:
234 ... innobase_commit_low,thd=0xad553dc0),innobase_commit.
I PERFORMANCE_SCHEMA: =
Что делать?
I попробовать jemalloc
I использовать read-only транзакции, если есть возможность
I перейти на Percona Server или MariaDB + XtraDB
I/O bound
I часто медленнее в 5.6 (часть регрессий исправлена в
5.6.13)
I плохая согласованность подсистем InnoDB (user threads,
log writing, flushing, purge, . . . )
I несколько buffer pool-ов чаще мешают, чем помогают (Bug
#67808)
I затор на всевозможных механизмах синхронизации
I doublewrite работает неэффективно для страниц < 16K
(Bug #69842)
Buffer pool mutex split
I реализовано в Percona Server много лет назад
I всё ещё актуально для 5.6
AHI mutex partitioning
Adaptive hash index:
I строится автоматически для часто обращаемых страниц
B-Tree индексов
I глобальная структура
Как определить AHI mutex contention?
I btr_search... в PMP
I wait/synch/rwlock/innodb/hash_table_locks в
PERFORMANCE_SCHEMA
Что делать?
I Percona Server:
innodb_adaptive_hash_index_partitions=N
AHI mutex partitioning
index lock
I 2 механизма обновления B-Tree индексов:
I оптимистический – страница обновляется “по месту”
I пессимистический – реорганизация страниц =>
блокировка всей таблицы!
I может читать страницы с диска, пока индекс заблокирован
I Как узнать?
I PMP: btr_cur_search_to_nth_level()
I PERFORMANCE_SCHEMA: &new_index->lock
I Что делать?
I использовать partitioning
log block checksums
Клиент: хотим загружать ˜130mil записей очень быстро
I LOAD DATA INFILE
I несколько потоков
I без secondary indexes
I много partitions
log block checksums
Затор на log_sys->mutex:
ulint
log_block_calc_checksum(
const byte* block) /*!< in: log block */
{
for (i = 0; i < OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_TRL_SIZE; i++
ulint b = (ulint) block[i];
sum &= 0x7FFFFFFFUL;
sum += b;
sum += b << sh;
sh++;
if (sh > 24) {
sh = 0;
}
}
return(sum);
}
I замена алгоритма на векторную CRC32 инструкцию процессора
=> ˜2x speedup
log block checksums
I Как узнать?
I PERFORMANCE_SCHEMA: log_sys->mutex
I PMP:
33 log_block_calc_checksum,log_block_store_checksum,log_
Что делать?
I дождаться innodb_log_checksum_algorithm в Percona
Server 5.6
Threadpool
I реализация в MySQL 6.0
I libevent
I глобальный мьютекс
I блокированное соединение оставалось в пуле
I реализация в MySQL Enterprise Edition
I реализована как plugin
I $$
I реализация в MariaDB
I независимая реализация
I не plugin (но использует инфрастуктуру enterprise plugin)
I реализация в Percona
I портирована из MariaDB
I high priority scheduling
I исправления ошибок
Threadpool

Contenu connexe

Tendances

(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва it-people
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаSumy PHP User Grpoup
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?Anton Zhbankov
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"oelifantiev
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009Liudmila Li
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 Управление большим количеством физических серверов, Александр Берсенев, Инст... Управление большим количеством физических серверов, Александр Берсенев, Инст...
Управление большим количеством физических серверов, Александр Берсенев, Инст...it-people
 
Замкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENЗамкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENkzissu
 
Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50lab50
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQAlexander Svetkin
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервераRoman Brovko
 

Tendances (20)

(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва  Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
Релиз-инжениринг Mail.ru. Взгляд изнутри. Максим Глеков, Mail.Ru Group, Москва
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
 
VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?VMUG Moscow 2014 Проблемы с дисками?
VMUG Moscow 2014 Проблемы с дисками?
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Ec2 Rootconf2009
Ec2 Rootconf2009Ec2 Rootconf2009
Ec2 Rootconf2009
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 Управление большим количеством физических серверов, Александр Берсенев, Инст... Управление большим количеством физических серверов, Александр Берсенев, Инст...
Управление большим количеством физических серверов, Александр Берсенев, Инст...
 
Замкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENЗамкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XEN
 
Clouds
CloudsClouds
Clouds
 
ПК КВГ
ПК КВГПК КВГ
ПК КВГ
 
Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50Кластер высокой готовности @ Лаборатория 50
Кластер высокой готовности @ Лаборатория 50
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQ
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера
 

En vedette (7)

MY HOME
MY HOMEMY HOME
MY HOME
 
Quand les arbres
Quand les arbres Quand les arbres
Quand les arbres
 
Diego
DiegoDiego
Diego
 
Top punjabi singer
Top punjabi singerTop punjabi singer
Top punjabi singer
 
Anjan b'day ppt
Anjan b'day pptAnjan b'day ppt
Anjan b'day ppt
 
Anjan b'day
Anjan b'dayAnjan b'day
Anjan b'day
 
Anjan
AnjanAnjan
Anjan
 

Similaire à Kopytov

SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5DevDay
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013ru-fedora-moscow-2013
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)Ontico
 
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Ontico
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected loadGrid Dynamics
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Ontico
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITIONМодели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITIONUP2IT
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийSveta Smirnova
 

Similaire à Kopytov (20)

SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
 
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected load
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITIONМодели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
Модели OPEN SOURCE компаний и можно ли выжить без OPEN CORE и ENTERPRISE EDITION
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 

Plus de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Plus de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Kopytov

  • 2. Percona Server? I расширенная версия (не форк!) MySQL I последний релиз MySQL + набор расширений I расширения основаны на запросах от клиентов и консультантов Percona I 30,000 - 60,000 загрузок в месяц с percona.com I скоро в репозиториях Debian (потом Ubuntu) I http://mirror.yandex.ru/mirrors/percona/
  • 3. Percona Server? Фокус разработки: I прозрачность: дополнительная диагностика и счётчики I управляемость: функции, облегчающие администрирование I производительность
  • 4. Percona Server -> MySQL 5.6 Функции Percona Server, реализованные в MySQL 5.6: I InnoDB persistent statistics I поддержка redo log > 4 GB I INFORMATION_SCHEMA.INNODB_SYS_* таблицы I INFORMATION_SCHEMA.BUFFER_POOL I innodb_page_size I InnoDB fast page checksums – innodb_checksum_algorithm в 5.6 I improved InnoDB tablespace import – экспорт таблиц прямо на сервере в 5.6 I LRU dump/restore – innodb_buffer_pool_load_at_startup в 5.6 I innodb_dict_size_limit – table_definition_cache в 5.6
  • 5. Percona Server 5.6 I Релиз: сентябрь (2013) I Расширения: userstat, расширения slow query log, corrupt_table_action, kill idle, trx, fake changes, expand_fast_index_creation, mysqldump --innodb-optimize-keys, innodb_log_block_size, innodb_flush_method, trx descriptors, buffer pool mutex split, adaptive hash index mutex split, dynamic row format в MEMORY storage engine, патчи для NUMA архитектуры, enforce storage engine, utility user, поддержка FusionIO atomic writes, временные таблицы в INFORMATION_SCHEMA, query cache strip comments, max_statement_time, scalability metrics plugin, диагностика в SHOW ENGINE INNODB STATUS
  • 6. Percona Server 5.6 I userstat – PERFORMANCE_SCHEMA не является полной заменой
  • 7. Percona Server 5.6 I расширения для slow query log # User@Host: mailboxer[mailboxer] @ [192.168.10.165] # Thread_id: 11167745 Schema: board # Query_time: 1.009400 Lock_time: 0.000190 Rows_sent: 4 R # Bytes_sent: 278 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_ta # InnoDB_trx_id: 1500 # QC_Hit: No Full_scan: Yes Full_join: No Tmp_table: No # Filesort: No Filesort_on_disk: No Merge_passes: 0 # InnoDB_IO_r_ops: 6415 InnoDB_IO_r_bytes: 105103360 Inn # InnoDB_rec_lock_wait: 0.000000 InnoDB_queue_wait: 0.000 # InnoDB_pages_distinct: 6430 SET timestamp=1346844943; SELECT id,title,production_year FROM title WHERE title = ’Ba
  • 8. Percona Server 5.6 I corrupt_table_action
  • 9. Percona Server 5.6 I kill idle trx BEGIN SELECT * FROM t; SELECT SLEEP(100000000); . . .
  • 10. Percona Server 5.6 Fake changes I быстрый разогрев replication slave “проигрыванием” живой нагрузки I читает страницы для INSERT / UPDATE / DELETE, но не изменяет их
  • 11. Percona Server 5.6 I expand_fast_index_creation
  • 12. Percona Server 5.6 I mysqldump --innodb-optimize-keys
  • 13. Percona Server 5.6 I innodb_log_block_size
  • 14. Percona Server 5.6 I innodb_flush_method
  • 15. Percona Server 5.6 I trx descriptors
  • 16. Percona Server 5.6 Buffer pool mutex split. I MySQL: глобальный мьютекс I Percona Server: I buf_pool_mutex I LRU_list_mutex I flush_list_mutex I page_hash_latch I free_list_mutex I zip_free_mutex I zip_hash_mutex
  • 17. Percona Server 5.6 Adaptive hash index partitioning I innodb_adaptive_hash_index_partitions
  • 18. Percona Server 5.6 I dynamic row format в MEMORY storage engine CREATE TABLE t (a VARCHAR(255)) ENGINE=MEMORY; I MySQL: 255+ байтов на запись I Percona Server: зависит от действительной длины каждой записи I Percona Server: поддерживает BLOB/TEXT
  • 19. Percona Server 5.6 I NUMA патчи
  • 20. Percona Server 5.6 I enforce storage engine mysql> select @@enforce_storage_engine; +--------------------------+ | @@enforce_storage_engine | +--------------------------+ | innodb | +--------------------------+ mysql> create table t(a int) engine=myisam; ERROR 1286 (42000): Unknown storage engine ’MyISAM’
  • 21. Percona Server 5.6 Utility user: I может изменять значения системных переменных I имеет доступ только к тем таблицам, к которым разрешено в my.cnf I может создавать/удалять пользователей (если разрешён доступ к mysql.*)
  • 22. Percona Server 5.6 поддержка FusionIO atomic writes: I поддерживает atomic writes API на FusionIO устройствах I порт из MariaDB I делает InnoDB doublewrite buffer ненужным I повышает производильность на запись до 43%
  • 23. Percona Server 5.6 I временные таблицы в INFORMATION_SCHEMA
  • 24. Percona Server 5.6 I query cache strip comments /* comment 1 */ select * from users where name like ’Bob%’; /* comment 2 */ select * from users where name like ’Bob%’;
  • 25. Percona Server 5.6 I max_statement_time из Twitter MySQL: mysql> SET max_statement_time=1000; mysql> SELECT SLEEP(2); ERROR: Query execution was interrupted, max_statement_time exceeded I модификация в Percona Server: mysql> SET STATEMENT max_statement_time=60000 SELECT * FROM big_table; ERROR: Query execution was interrupted, max_statement_time exceeded
  • 26. Percona Server 5.6 Scalability metrics plugin: I сколько запросов завершилось в интервал времени? I сколько запросов выполняются сейчас? I сумма времени выполнения запросов, включая те, которые ещё выполняются I общее время, когда сервер выполнял хотя бы один запрос I реализовано как audit plugin
  • 27. Percona Server 5.6 I Диагностика в SHOW ENGINE INNODB STATUS: мьютексы, background threads, insert buffer, adaptive hash index, buffer pool, redo log, transactions, . . .
  • 28. Производительность: I SSD часто требуют иного подхода для чтения/записи данных I память (NUMA встречается всё чаще) I процессоры: больше “лошадиных сил”, но нужно уметь ими пользоваться
  • 29. Производительность: /*********************************************************** Runs an idle loop on CPU. The argument gives the desired delay in microseconds on 100 MHz Pentium + Visual C++. */ ... /* Semaphore operations in operating systems are slow: Solaris on a 1993 Sparc takes 3 microseconds (us) for a lock-unlock pair and Windows NT on a 1995 Pentium takes 20 microseconds for a lock-unlock pair. */
  • 30. Инструменты: I PERFORMANCE_SCHEMA в 5.6 +: I SQL интерфейс I нет равных по возможностям инструментов -: I накладные расходы до 30% (Bug #68413) I плохо документирована I иногда требует рестарта сервера I мало информации по мьютексам I сложно использовать и настраивать (вспомогательные утилиты, например http://www.markleith.co.uk/ps_helper/)
  • 31. Инструменты INFORMATION_SCHEMA.INNODB_METRICS в 5.6 +: I дополняет PERFORMANCE_SCHEMA I низкие накладные расходы I не требует рестарта -: I плохо документирована I оригинальный способ конфигурации
  • 32. Инструменты I OProfile +: I callgraph profiling I annotated profiling I сравнительно низкий overhead I доступен на всех системах I широкий спектр hardware events –: I не показывает мьютексы
  • 33. Инструменты I perf +: I похож на OProfile I perf top -: I показывает только системные мьютексы (pthread)
  • 34. Инструменты I Poor Man’s Profiler I http://poormansprofiler.org/ I Percona Toolkit: wget percona.com/get/pt-pmp
  • 35. Инструменты I Poor Man’s Profiler 300 select,os_thread_sleep,srv_LRU_dump_restore_thread,start_th 157 pthread_cond_wait,os_cond_wait,os_event_wait_low,sync_array 147 pthread_cond_wait,os_cond_wait,os_event_wait_low,srv_purge_ 139 select,os_thread_sleep,srv_purge_thread,start_thread,clone 104 pthread_cond_wait,os_cond_wait,os_event_wait_low,sync_array 78 ut_delay,mutex_spin_wait,mutex_enter_func,pfs_mutex_enter_f +: I доступен всегда и везде I позволяет получить общую картину быстро с минимальными усилиями -: I высокий overhead I низкая точность I нужно знать код, чтобы прочитать
  • 36. Визуализация: I dim_stat I Percona Monitoring Plugins – интеграция Nagios и Cacti
  • 37. NUMA Uniform Memory Accessc vs Non-Uniform Memory Access:
  • 38. NUMA I всегда есть обращения к “чужой” памяти
  • 39. NUMA I память выделяется на текущей ноде по умолчанию
  • 40. NUMA I чередование (interleaving) памяти: # Numactl --interleave all mysqld ... I interleaving на уровне BIOS – плохо!
  • 41. NUMA I файловый кэш тоже мешает: I решение: # sysctl -q -w vm.drop_caches=3
  • 42. NUMA Linux memory overcommit: I память выделяется, только когда к ней обращаются I при инициализации buffer pool нужно сделать memset()
  • 43. NUMA I Подробное описание проблем от Jeremy Cole: http://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the- numa-architecture/ http://blog.jcole.us/2012/04/16/a-brief-update-on-numa-and- mysql/ Патчи от Twitter в Percona Server 5.5 / 5.6: I опции mysqld_safe: [mysqld_save] numa_interleave=1 flush_caches=1 I опции сервера: [server] innodb_buffer_pool_populate=1
  • 44. Типы нагрузок: I CPU bound: I активные данные в памяти I только чтение I I/O bound: I обычно интенсивная запись
  • 45. CPU-bound I неэффективная работа с памятью и кэшем процессора I плохая масштабируемость I неэффективная реализация примитивов синхронизации I затор на doublewrite buffer для read-only нагрузок в 5.6!
  • 46. jemalloc I масштабируемая реализация malloc() http://www.canonware.com/jemalloc/ I используется по умолчанию в Firefox, FreeBSD, NetBSD
  • 47. jemalloc I поставляется вместе с Percona Server (.tar.gz) I опция malloc-lib: [mysqld_save] malloc-lib=/usr/local/mysql/lib/libjemalloc.so
  • 48. kernel mutex и trx sys->mutex I read views:
  • 49. kernel mutex и trx sys->mutex I read views:
  • 50. kernel mutex и trx sys->mutex I создание read view:
  • 51. kernel mutex и trx sys->mutex read-only транзакции в 5.6: I SELECT + AUTO_COMMIT=1 или START TRANSACTION READ ONLY I read-only транзакции не добавляются в trx_list I нет проблемы, если trx_list пустой (т.е. если нет других транзакций!)
  • 55. kernel mutex и trx sys->mutex Как узнать? I SHOW ENGINE INNODB STATUS: --Thread 140370743510784 has waited at trx0trx.c line 1184 f Mutex at 0x2b0ccc8 ’&kernel_mutex’, lock var 1 ... I PMP: 234 ... innobase_commit_low,thd=0xad553dc0),innobase_commit. I PERFORMANCE_SCHEMA: = Что делать? I попробовать jemalloc I использовать read-only транзакции, если есть возможность I перейти на Percona Server или MariaDB + XtraDB
  • 56. I/O bound I часто медленнее в 5.6 (часть регрессий исправлена в 5.6.13) I плохая согласованность подсистем InnoDB (user threads, log writing, flushing, purge, . . . ) I несколько buffer pool-ов чаще мешают, чем помогают (Bug #67808) I затор на всевозможных механизмах синхронизации I doublewrite работает неэффективно для страниц < 16K (Bug #69842)
  • 57. Buffer pool mutex split I реализовано в Percona Server много лет назад I всё ещё актуально для 5.6
  • 58. AHI mutex partitioning Adaptive hash index: I строится автоматически для часто обращаемых страниц B-Tree индексов I глобальная структура Как определить AHI mutex contention? I btr_search... в PMP I wait/synch/rwlock/innodb/hash_table_locks в PERFORMANCE_SCHEMA Что делать? I Percona Server: innodb_adaptive_hash_index_partitions=N
  • 60. index lock I 2 механизма обновления B-Tree индексов: I оптимистический – страница обновляется “по месту” I пессимистический – реорганизация страниц => блокировка всей таблицы! I может читать страницы с диска, пока индекс заблокирован I Как узнать? I PMP: btr_cur_search_to_nth_level() I PERFORMANCE_SCHEMA: &new_index->lock I Что делать? I использовать partitioning
  • 61. log block checksums Клиент: хотим загружать ˜130mil записей очень быстро I LOAD DATA INFILE I несколько потоков I без secondary indexes I много partitions
  • 62. log block checksums Затор на log_sys->mutex: ulint log_block_calc_checksum( const byte* block) /*!< in: log block */ { for (i = 0; i < OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_TRL_SIZE; i++ ulint b = (ulint) block[i]; sum &= 0x7FFFFFFFUL; sum += b; sum += b << sh; sh++; if (sh > 24) { sh = 0; } } return(sum); } I замена алгоритма на векторную CRC32 инструкцию процессора => ˜2x speedup
  • 63. log block checksums I Как узнать? I PERFORMANCE_SCHEMA: log_sys->mutex I PMP: 33 log_block_calc_checksum,log_block_store_checksum,log_ Что делать? I дождаться innodb_log_checksum_algorithm в Percona Server 5.6
  • 64. Threadpool I реализация в MySQL 6.0 I libevent I глобальный мьютекс I блокированное соединение оставалось в пуле I реализация в MySQL Enterprise Edition I реализована как plugin I $$ I реализация в MariaDB I независимая реализация I не plugin (но использует инфрастуктуру enterprise plugin) I реализация в Percona I портирована из MariaDB I high priority scheduling I исправления ошибок