My sql 5.6-new-stable-mmug
Upcoming SlideShare
Loading in...5
×
 

My sql 5.6-new-stable-mmug

on

  • 897 views

Доклад Дмитрия Ленева на Moscow MySQL User Group.

Доклад Дмитрия Ленева на Moscow MySQL User Group.

Statistics

Views

Total Views
897
Views on SlideShare
673
Embed Views
224

Actions

Likes
1
Downloads
5
Comments
0

3 Embeds 224

http://tokarchuk.ru 181
http://feeds.feedburner.com 42
http://127.0.0.1 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

My sql 5.6-new-stable-mmug My sql 5.6-new-stable-mmug Presentation Transcript

  • <Insert Picture Here>5.6 новая стабильная ветка MySQL Server.Дмитрий Ленев, Март 2013, Москва
  • MySQL 5.6 ● Текущая версия – 5.6.10 ● Это первая стабильная версия (GA) в 5.6 выпущена в начале февраля 2013 года ● До этого 3 RC версии с сентября 2012 ● Базируется на Milestone Release версии 5.6.6- m9 (август 2012) ● Старые ветки 5.1 и 5.5 по прежнему поддерживаются ● Новая development ветка 5.72 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Основные направления улучшений в MySQL 5.6● Оптимизатор/выполнение запросов● InnoDB● Репликация● Расширение типов и новые операции● Улучшения в безопасности● performance_schema● Memcached API для INNODB 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в оптимизаторе/выполнении запросов (скорость).● Index Condition Pushdown● Disk Sweep Multi-Range Read● Batched Key Access для соединений (joins)● Оптимизации выполнения подзапросов: – Через материализацию – Через semi-join – Отложенная материализация для подзапросов из FROM/views – Игнорирование клауз подзапроса не влияющих на результат● Улучшение выполнения запросов с ORDER BY (filesort)● Оптимизированный анализ селективности для IN 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Index Condition PushdownStorage engine при чтении по индексу проверяет часть условия котораязависит только от полей в индексе, не читая всю строку и не возвращаяуправление SQL-layer.CREATE TABLE person ( personid INTEGER PRIMARY KEY, firstname CHAR(20), lastname CHAR(20), postalcode INTEGER, age INTEGER, KEY k1 (postalcode,age) ) ENGINE=InnoDB;SELECT lastname, firstname FROM person WHERE postalcode BETWEEN 5000 AND 5500 AND age BETWEEN 21AND 22; 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Disk Sweep – Multi-Range ReadЧтение строк по индексу, в порядке расположения их на дискепакетная обработка групп чтений по индексу:CREATE TABLE items ( id INTEGER PRIMARY KEY, attr1 CHAR(20), keypart1 INTEGER, keypart2 INTEGER, KEY k1 (keypart1, keypart2) ) ENGINE=InnoDB;SELECT * FROM items WHERE keypart1 BETWEEN 1000 AND 1100 AND keypart2 = 1200;Без MRR получим один промежуток вида 1000 <= keypart1 <= 1100.C MRR получим 100 промежутков для {keypart1, keypart2} – {1000, 1200}, {1001,1200} … {1100, 1200}. 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Batched Key Access в соединениях● Для соединений с доступом к одной из табличек по ключу – Накопить строки из первой таблички в буфере – Запросить строки из второй таблички, с ключем, одним запросом, используя DS MRR – Получить строки по одной от storage engine для соединения (с ссылкой на элемент в буфере) 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Оптимизации в выполнении подзапросов● Выполнение через материализациюSELECT * FROM t1 WHERE t1.a IN (SELECT t2.b FROM t2 WHERE where_condition);● Выполнение через semi-joinSELECT * FROM nation WHERE n_regionkey IN (SELECT r_regionkey FROM regionWHERE r_name=AFRICA);SELECT nation.* FROM nation SEMI JOIN region ON nation.n_regionkey =region.r_regionkey AND region.r_name=AFRICA;● Отложенная материализация для подзапросов из FROM клаузы/views (лучше для EXPLAIN, может не потребоваться вообще)● Игнорирование клауз подзапроса не влияющих на результат (SELECT * FROM … a IN (SELECT DISTINCT b FROM …) ) 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Прочие улучшения в оптимизации/выполнении запросов● Улучшение выполнения запросов с ORDER BY (filesort) (для запросов c ORDER BY non_indexed_column и LIMIT x, и случаев когда x строк помещаются в sort buffer)● Оптимизированный анализ статистики для IN (параметр eq_range_index_dive_limit, определяет будем ли мы делать нырки в индекс или использовать статистику по индексу). 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в оптимизаторе/выполнении запросов (удобство в использовании)● Optimizer trace (SET optimizer_trace=..., I_S.OPTIMIZER_TRACE)● EXPLAIN для INSERT/UPDATE/DELETEEXPLAIN UPDATE t1 SET c2=12345 WHERE (c1, c2) IN ((3, 1)); id select_type table type possible_keys key key_len ref row Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using where● EXPLAIN в JSON формате (EXPLAIN FORMAT=JSON ...)● Определение стратегии обработки ORDER BY на этапе оптимизации 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Новые возможности в InnoDB (1)● Хранимая статистика для таблиц (сохраняется при рестарте, перестраивается ANALYZE TABLE, опции управления качеством).● Поддержка полнотекстового поиска (таблицы I_S.INNODB_FT_*, переменные innodb_ft_*, предикат MATCH (col1, …, colN) AGAINST (expr [search_modifier]) )● Новые таблицы в INFORMATION_SCHEMA (INNODB_METRICS, INNODB_SYS_*, INNODB_BUFFER_*)● Ослаблено ограничение на размер колонки в ключе● Появилось возможность журналирования всех deadlock-ов (--innodb_print_all_deadlocks) 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Новые возможности в InnoDB (2)● Online ALTER – все виды add/drop index – add/drop column – add/drop foreign key (без проверки) – изменение nullability, – изменение auto_increment, – переименование столбцов – ... – не поддерживается смена типа● Transportable tablespaces (FLUSH TABLE ... FOR EXPORT)● Поддержка опции DATA DIRECTORY 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Производительность и масштабируемость в InnoDB (1)● Оптимизация обработки read-only транзакций (non- locking autocommit SELECTs, START TRANSACTION READ ONLY, до 3х!)● Увеличен максимальный размер REDO журнала (512Gb, --innodb-log-file-size=)● Сохранение/восстановле ние содержимого buffer pool (innodb_buffer_pool_dump/load/*) 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Производительность и масштабируемость в InnoDB (2)● Поддержка страниц уменьшенного размера (4K и 8К при 16К по умолчанию, SSD!, --innodb-page-size)● Поддержка UNDO журнала в отдельных tablespace (SSD!, --innodb-undo-directory=)● Поддержка аппаратного вычисления контрольных сумм для страниц (--innodb-checksum-algorithm=) 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Производительность и масштабируемость в InnoDB (3)● Kernel mutex разбит на несколько mutexов – Транзакции и MVCC views: trx_sys_t::lock (rw_lock) и trx_t::mutex – Locking : lock_sys_t::mutex и lock_sys_t::wait_mutex● Оптимизация использования блокировок при обращении к buffer pool● Оптимизация использования блокировок во время commit● Очистка кэша InnoDB таблиц (--table_definition_cache, LRU) 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Производительность и масштабируемость в InnoDB (4)● Несколько purge ниток (--innodb_purge_threads, <=32)● Отдельная нить для выталкивания страниц из buffer pool (вместо master thread), новый алгоритм выталкивания (DimitriK)● Улучшен механизм управление нитями в InnoDB● Оптимизировано использование кэша процессора (до 50% в OLTP-RO, до 6 раз в RO-S-Ranges) 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Производительность и масштабируемость InnoDB по сравнению с MySQL 5.517 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в репликации (1)● Group Commit для Binary Log (--binlog-max-flush-queue-time)● Поддержка Global Transaction Identifiers (GTID = source_id:transaction_id, CHANGE MASTER TO ... MASTER_AUTO_POSITION=1, --gtid_mode=on, @@gtid_ ...)● Многопоточный slave (параллелизм для БД, --slave-parallel- workers=N)● Crash-safe slave (автоматическое восстановление репликации после падения, crash safe binary log, файлы состояния, хранение состояния в таблицах)● Поддержка контрольных сумм в binary log (--binlog- checksum=none|crc32) 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в репликации (2)● Поддержка частичных образов в RBR (--binlog-row-image = full|minimal|noblob)● Информационные события для RBR (--binlog-rows-query-log- events)● Оптимизация RBR для таблиц без индексов● UUID для идентификации серверов● Репликация с задержкой (CHANGE MASTER TO .. MASTER_DELAY=N)● Прямая работа с binary log для удаленного сервера mysqlbinlog –read-from-remote-server --host=host_name --raw --stop-never binlog.000130 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Расширения системы типов/операций● Поддержка микросекунд для TIME, TIMESTAMP и DATETIME● Поддержка DEFAULT NOW()/ON UPDATE NOW() для DATETIME и нескольких полей, новое поведение TIMESTAMP по умолчанию● Поддержка OpenGIS/точных операций для GIS данных● Поддержка Unicode 5.2 Collation Algorithm и нескольких новых collations (Вьетнамская, Хорватская, Бенгальская, …).● Поддержка UTF-16LE и Unicode в Windows CLI● TO_BASE64()/FROM_BASE64() и WEIGHT_STRING() 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в обработке ошибок● GET DIAGNOSTICSGET DIAGNOSTICS rows = ROW_COUNT;GET DIAGNOSTICS CONDITION 1 code = RETURNED_SQLSTATE, msg =MESSAGE_TEXT;● Поведение обработчиков ошибок (HANDLER) в хранимых процедурах стало ближе к стандарту 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в безопасности● SHA-256 хэширование для паролей (sha256_password plugin)● Обфускация пароля (.mylogin.cnf/mysql_config_editor)● ALTER USER … PASSWORD EXPIRE● Plugin API для проверки качества пароля (CREATE USER, GRANT, SET PASSWORD, простой пример validate_password.cc) 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Улучшения в partitioning● Улучшена работа с большим числом partition (partition pruning на этапе оптимизации, выигрыш до 5x и более на 1K partition, 8K теперь реальность!).● Возможность явного задания partition в операторе SELECT * FROM employees PARTITION (p0, p2); DELETE FROM employees PARTITION (p0, p1); UPDATE employees PARTITION (p0) SET store_id = 2 WHERE fname = Jill; SELECT e.id, s.city FROM employees AS e JOIN stores PARTITION (p1) AS s ...;● Импорт/Экспорт в/из таблиц с partitioning ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2; 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Новое в PERFORMANCE_SCHEMA● PERFORMANCE_SCHEMA включена по умолчанию!● Инструментированы блокировки таблиц, ввод-вывод в таблицы и сетевой ввод-вывод.● Аггрегирование статистики для блокировок и ввода-вывода● Инструментированы операторы● Инструментированы этапы выполнения операторов● Поддержка digests для операторов и аггрегирование по ним● Фильтрация по пользователям, сессиям и таблицам● P_S.HOST_CACHE 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • PERFORMANCE_SCHEMA: инструментирован ввод-вывод в таблицыТаблицы table_io_waits_summary_by*:SELECT OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_READ, SUM_TIMER_READ,COUNT_INSERT, SUM_TIMER_INSERT FROM performance_schema.table_io_waits_summary_by_tableWHERE OBJECT_NAME=t1;OBJECT_ OBJECT_NAME COUNT_STAR COUNT_READ SUM_TIMER_READ COUNT_INSERT SUM_TIMER_INSERTSCHEMA test t1 9 5 16071156 4 53219976SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME, COUNT_STAR, COUNT_READ,SUM_TIMER_READ FROM performance_schema.table_io_waits_summary_by_index_usage WHEREOBJECT_NAME=t1; OBJECT_ OBJECT_NAME INDEX_NAME COUNT_STAR COUNT_READ SUM_TIMER_READ SCHEMA test t1 PRIMARY 0 0 0 test t1 j 4 4 101279076 test t1 NULL 4 0 0 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • PERFORMANCE_SCHEMA: инструментированы операторыТаблицы events_statements_*, events_statements_summary_*:SELECT THREAD_ID, EVENT_NAME, TIMER_WAIT, SQL_TEXT, ROWS_SENT, ROWS_EXAMINED, CREATED_TMP_TABLES, NO_INDEX_USED FROM performance_schema.events_statements_history LIMIT 3, 3;THRE EVENT_NAME TIMER_WAIT SQL_TEXT ROWS ROWS_EX CREATED_T NO_INDEAD_ID _SENT AMINED MP_TABLES X_USED 16 statement/sql/creat 1572757000 create table t1 (i int) 0 0 0 0 e_table 16 statement/sql/insert 1129054000 insert into t1 values (1), (2), 0 0 0 0 (3) 16 statement/sql/select 678927000 select * from t1 where i = 2 1 3 0 1SELECT THREAD_ID, EVENT_NAME, SUM_TIMER_WAIT, AVG_TIMER_WAIT, SUM_ROWS_SENT, SUM_NO_INDEX_USED FROM performance_schema.events_statements_summary_by_thread_by_event_name WHERE THREAD_ID=16 LIMIT 1; THREAD_ID EVENT_NAME SUM_TIMER_WAIT AVG_TIMER_WAIT SUM_ROWS_SENT SUM_NO_INDEX_U SED 16 statement/sql/select 1062565000 265641000 1 1 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • PERFORMANCE_SCHEMA: инструментированы этапы выполнения операторовТаблицы event_stages_*, event_stages_summary_*:SELECT EVENT_NAME, SOURCE, TIMER_START, TIMER_WAIT FROM performance_schema.events_stages_history WHERE THREAD_ID=16 AND NESTING_EVENT_ID=343 ORDER BY TIMER_WAIT DESC LIMIT 5; EVENT_NAME SOURCE TIMER_START TIMER_WAIT stage/sql/init sql_parse.cc:936 552715025748 66623746 stage/sql/Opening sql_base.cc:4805 552788106302 29843681 tables stage/sql/preparing sql_select.cc:1977 552876811982 21863187 stage/sql/init sql_select.cc:3588 552831727471 20826223 stage/sql/System lock lock.cc:324 552817949983 13777488 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • PERFORMANCE_SCHEMA: добавлена поддержка digests для операторов и аггрегирование по нимТаблица events_statements_summary_by_digestSELECT SCHEMA_NAME, DIGEST, DIGEST_TEXT, COUNT_STAR, SUM_ROWS_SENT SUM_ROWS_EXAMINED, SUM_NO_INDEX_USED FROM performance_schema.events_statements_summary_by_digest LIMIT 1, 2;SCHEMA DIGEST DIGEST_TEXT COUNT_ SUM_ROWS_E SUM_NO_I _NAME STAR XAMINED NDEX_USE D test 449be9e4a75d65e7bf9cdc74fde1a406 INSERT INTO t1 VALUES (...) /* , ... */ 1 0 0 test 820da79addca10faffe250847d91961f SELECT * FROM t1 WHERE j IN (...) 1 2 0 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Кроме того● Хранимые процедуры больше не ломаются параллельным DDL● Table Cache разбит на несколько partitions● Добавлена поддержка пользовательских аттрибутов для соединения (mysql_options(), P_S.session_connect_attrs)● Изменены значения по умолчанию для многих параметров! 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • Memcached API для InnoDB● Daemon plugin для MySQL● Прямой доступ к InnoDB● Поддерживает бинарный и текстовый протокол● Поддерживает значения из нескольких полей● Опционально поддерживает локальное кэширование● Поддерживает batch операции для чтения и записи● Поддерживает простую аутентификацию через SASL 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • ● Подробнее о MySQL-5.6: – http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html – http://dev.mysql.com/doc/refman/5.6/en/news-5-6-x.html● Загрузить MySQL-5.6.10: – http://dev.mysql.com/downloads/mysql/#downloads 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.