SlideShare a Scribd company logo
1 of 32
Download to read offline
<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.7
2   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 Pushdown


Storage 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 21
AND 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-join
SELECT * FROM nation WHERE n_regionkey IN (SELECT r_regionkey FROM region
WHERE 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/DELETE
EXPLAIN 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.5




17   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 DIAGNOSTICS
GET 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_table
WHERE OBJECT_NAME='t1';

OBJECT_              OBJECT_NAME                           COUNT_STAR             COUNT_READ    SUM_TIMER_READ    COUNT_INSERT    SUM_TIMER_INSERT
SCHEMA

  test                            t1                                  9                5           16071156            4               53219976


SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME, COUNT_STAR, COUNT_READ,
SUM_TIMER_READ FROM performance_schema.table_io_waits_summary_by_index_usage WHERE
OBJECT_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_INDE
AD_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             1


SELECT 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_digest
SELECT 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.
My sql 5.6-new-stable-mmug

More Related Content

What's hot

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
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийSveta Smirnova
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.Sergey Petrunya
 
Новые возможности отладки MySQL 5.7 на практике
Новые возможности отладки MySQL 5.7 на практикеНовые возможности отладки MySQL 5.7 на практике
Новые возможности отладки MySQL 5.7 на практикеSveta Smirnova
 
СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9Technopark
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJSYura Bogdanov
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQLAnastasia Lubennikova
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Alexey Kovyazin
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данныхLevon Avakyan
 
Aleksey Mashanov Rit
Aleksey  Mashanov RitAleksey  Mashanov Rit
Aleksey Mashanov Ritrit2010
 
Query perfomance tuning
Query perfomance tuningQuery perfomance tuning
Query perfomance tuningcollabock
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаAnastasia Lubennikova
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Levon Avakyan
 
Entity framework
Entity frameworkEntity framework
Entity frameworkScaiper
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. RussianRawan Qurmet
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8Technopark
 

What's hot (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
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.
 
Новые возможности отладки MySQL 5.7 на практике
Новые возможности отладки MySQL 5.7 на практикеНовые возможности отладки MySQL 5.7 на практике
Новые возможности отладки MySQL 5.7 на практике
 
СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJS
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Расширения для PostgreSQL
Расширения для PostgreSQLРасширения для PostgreSQL
Расширения для PostgreSQL
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
 
JDBC
JDBCJDBC
JDBC
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
 
Aleksey Mashanov Rit
Aleksey  Mashanov RitAleksey  Mashanov Rit
Aleksey Mashanov Rit
 
Query perfomance tuning
Query perfomance tuningQuery perfomance tuning
Query perfomance tuning
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
MySQL Optimization. Russian
MySQL Optimization. RussianMySQL Optimization. Russian
MySQL Optimization. Russian
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 

Viewers also liked

Bio 120 presentation 1
Bio 120 presentation 1Bio 120 presentation 1
Bio 120 presentation 1desntay2
 
Catholic cross culutral servicesl - nov 21, 2010
Catholic cross  culutral servicesl - nov 21, 2010Catholic cross  culutral servicesl - nov 21, 2010
Catholic cross culutral servicesl - nov 21, 2010The Scarborough Hospital
 
Fcds mid term-Rules of the Road Test 10/26/11
Fcds mid term-Rules of the Road Test 10/26/11Fcds mid term-Rules of the Road Test 10/26/11
Fcds mid term-Rules of the Road Test 10/26/11dalufcds
 
Scope & sequence 2010
Scope & sequence 2010Scope & sequence 2010
Scope & sequence 2010vpreddey
 
Prezentare liceu
Prezentare liceuPrezentare liceu
Prezentare liceuPishta Bmc
 
Is Any Access Good Access? Equitable digital access in rural schools
Is Any Access Good Access?  Equitable digital access in rural schoolsIs Any Access Good Access?  Equitable digital access in rural schools
Is Any Access Good Access? Equitable digital access in rural schoolspjames04
 
Krydret kylling saute og quinoa
Krydret kylling saute og quinoaKrydret kylling saute og quinoa
Krydret kylling saute og quinoaheleverdeniskole
 
Confiance Newsletter:Take it to the bank
Confiance Newsletter:Take it to the bankConfiance Newsletter:Take it to the bank
Confiance Newsletter:Take it to the bankConfiance Australia
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Liyao Chen
 
Chapter 10 presentation
Chapter 10 presentationChapter 10 presentation
Chapter 10 presentationdesntay2
 
Powerpoint presentation (smart phones)
Powerpoint presentation (smart phones)Powerpoint presentation (smart phones)
Powerpoint presentation (smart phones)Mongiwethu Kumalo
 

Viewers also liked (20)

Ti25 brochure
Ti25 brochureTi25 brochure
Ti25 brochure
 
Bio 120 presentation 1
Bio 120 presentation 1Bio 120 presentation 1
Bio 120 presentation 1
 
Catholic cross culutral servicesl - nov 21, 2010
Catholic cross  culutral servicesl - nov 21, 2010Catholic cross  culutral servicesl - nov 21, 2010
Catholic cross culutral servicesl - nov 21, 2010
 
Fcds mid term-Rules of the Road Test 10/26/11
Fcds mid term-Rules of the Road Test 10/26/11Fcds mid term-Rules of the Road Test 10/26/11
Fcds mid term-Rules of the Road Test 10/26/11
 
Scope & sequence 2010
Scope & sequence 2010Scope & sequence 2010
Scope & sequence 2010
 
La web 2
La web 2La web 2
La web 2
 
ProtectIV
ProtectIVProtectIV
ProtectIV
 
Prezentare liceu
Prezentare liceuPrezentare liceu
Prezentare liceu
 
Is Any Access Good Access? Equitable digital access in rural schools
Is Any Access Good Access?  Equitable digital access in rural schoolsIs Any Access Good Access?  Equitable digital access in rural schools
Is Any Access Good Access? Equitable digital access in rural schools
 
Ti32 Data Sheet
Ti32 Data SheetTi32 Data Sheet
Ti32 Data Sheet
 
Ellis island
Ellis islandEllis island
Ellis island
 
Krydret kylling saute og quinoa
Krydret kylling saute og quinoaKrydret kylling saute og quinoa
Krydret kylling saute og quinoa
 
I patten tataotao
I patten tataotaoI patten tataotao
I patten tataotao
 
Confiance Newsletter:Take it to the bank
Confiance Newsletter:Take it to the bankConfiance Newsletter:Take it to the bank
Confiance Newsletter:Take it to the bank
 
Evgeniy chilevskiy
Evgeniy chilevskiyEvgeniy chilevskiy
Evgeniy chilevskiy
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享
 
Fluke TiR32
Fluke TiR32 Fluke TiR32
Fluke TiR32
 
Chapter 10 presentation
Chapter 10 presentationChapter 10 presentation
Chapter 10 presentation
 
Powerpoint presentation (smart phones)
Powerpoint presentation (smart phones)Powerpoint presentation (smart phones)
Powerpoint presentation (smart phones)
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 

Similar to My sql 5.6-new-stable-mmug

"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"Badoo Development
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиAndrey Akulov
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Alexey Kovyazin
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageDEPO Computers
 
Народные средства оптимизации PostgreSQL
Народные средства оптимизации PostgreSQLНародные средства оптимизации PostgreSQL
Народные средства оптимизации PostgreSQLNikolay Pisarev
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresqlOleg Churkin
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Devconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresDevconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresSergey Petrunya
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноVladislav Bezverhiy
 
Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQLSveta Smirnova
 
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleBAKOTECH
 
"Производительность MySQL: что нового?"
"Производительность MySQL: что нового?""Производительность MySQL: что нового?"
"Производительность MySQL: что нового?"Badoo Development
 

Similar to My sql 5.6-new-stable-mmug (20)

"Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7""Новые возможности MySQL 5.7"
"Новые возможности MySQL 5.7"
 
MySQL 8.0
MySQL 8.0MySQL 8.0
MySQL 8.0
 
Oracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памятиOracle database In-Memory - новая технология обработки в памяти
Oracle database In-Memory - новая технология обработки в памяти
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO Storage
 
Народные средства оптимизации PostgreSQL
Народные средства оптимизации PostgreSQLНародные средства оптимизации PostgreSQL
Народные средства оптимизации PostgreSQL
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
django-and-postgresql
django-and-postgresqldjango-and-postgresql
django-and-postgresql
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Devconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-featuresDevconf2010 mariadb-extra-features
Devconf2010 mariadb-extra-features
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. Молодёжно
 
Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQL
 
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов Oracle
 
"Производительность MySQL: что нового?"
"Производительность MySQL: что нового?""Производительность MySQL: что нового?"
"Производительность MySQL: что нового?"
 

More from Andrey Tokarchuk

Интеллектуальная собственность в IT
Интеллектуальная собственность в ITИнтеллектуальная собственность в IT
Интеллектуальная собственность в ITAndrey Tokarchuk
 
Демонизированный PHP - before it was cool
Демонизированный PHP - before it was coolДемонизированный PHP - before it was cool
Демонизированный PHP - before it was coolAndrey Tokarchuk
 
Тестируем инфраструктуру как код
Тестируем инфраструктуру как кодТестируем инфраструктуру как код
Тестируем инфраструктуру как кодAndrey Tokarchuk
 
Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015Andrey Tokarchuk
 
писатели юбиляры
писатели юбилярыписатели юбиляры
писатели юбилярыAndrey Tokarchuk
 
Модули в zend framework 2.ростислав михайлив
Модули в zend framework 2.ростислав михайливМодули в zend framework 2.ростислав михайлив
Модули в zend framework 2.ростислав михайливAndrey Tokarchuk
 
Zend cache evolution.владимир дубина
Zend cache   evolution.владимир дубинаZend cache   evolution.владимир дубина
Zend cache evolution.владимир дубинаAndrey Tokarchuk
 
Очередь задач и многопоточность с помощью gearman и zf.станислав прокопив
Очередь задач и многопоточность с помощью gearman и zf.станислав прокопивОчередь задач и многопоточность с помощью gearman и zf.станислав прокопив
Очередь задач и многопоточность с помощью gearman и zf.станислав прокопивAndrey Tokarchuk
 
Highload не кусается.антон шевчук
Highload не кусается.антон шевчукHighload не кусается.антон шевчук
Highload не кусается.антон шевчукAndrey Tokarchuk
 
Соблазнительные формы в zend framework 2.даниил кожемяко
Соблазнительные формы в zend framework 2.даниил кожемякоСоблазнительные формы в zend framework 2.даниил кожемяко
Соблазнительные формы в zend framework 2.даниил кожемякоAndrey Tokarchuk
 
mms или как просто работать с моделями данных.иван кутузов
mms или как просто работать с моделями данных.иван кутузовmms или как просто работать с моделями данных.иван кутузов
mms или как просто работать с моделями данных.иван кутузовAndrey Tokarchuk
 
Cобытийная модель zend framework 2, event manager. александр вронский
Cобытийная модель zend framework 2, event manager. александр вронскийCобытийная модель zend framework 2, event manager. александр вронский
Cобытийная модель zend framework 2, event manager. александр вронскийAndrey Tokarchuk
 

More from Andrey Tokarchuk (20)

Nsx 6.2
Nsx 6.2Nsx 6.2
Nsx 6.2
 
Vrealize automotion
Vrealize automotionVrealize automotion
Vrealize automotion
 
Vmware any-cloud
Vmware any-cloudVmware any-cloud
Vmware any-cloud
 
Nvidia grid-2
Nvidia grid-2Nvidia grid-2
Nvidia grid-2
 
Интеллектуальная собственность в IT
Интеллектуальная собственность в ITИнтеллектуальная собственность в IT
Интеллектуальная собственность в IT
 
Демонизированный PHP - before it was cool
Демонизированный PHP - before it was coolДемонизированный PHP - before it was cool
Демонизированный PHP - before it was cool
 
Тестируем инфраструктуру как код
Тестируем инфраструктуру как кодТестируем инфраструктуру как код
Тестируем инфраструктуру как код
 
OpenStack сегодня
OpenStack сегодняOpenStack сегодня
OpenStack сегодня
 
Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015
 
писатели юбиляры
писатели юбилярыписатели юбиляры
писатели юбиляры
 
Модули в zend framework 2.ростислав михайлив
Модули в zend framework 2.ростислав михайливМодули в zend framework 2.ростислав михайлив
Модули в zend framework 2.ростислав михайлив
 
Zend cache evolution.владимир дубина
Zend cache   evolution.владимир дубинаZend cache   evolution.владимир дубина
Zend cache evolution.владимир дубина
 
Очередь задач и многопоточность с помощью gearman и zf.станислав прокопив
Очередь задач и многопоточность с помощью gearman и zf.станислав прокопивОчередь задач и многопоточность с помощью gearman и zf.станислав прокопив
Очередь задач и многопоточность с помощью gearman и zf.станислав прокопив
 
Highload не кусается.антон шевчук
Highload не кусается.антон шевчукHighload не кусается.антон шевчук
Highload не кусается.антон шевчук
 
Соблазнительные формы в zend framework 2.даниил кожемяко
Соблазнительные формы в zend framework 2.даниил кожемякоСоблазнительные формы в zend framework 2.даниил кожемяко
Соблазнительные формы в zend framework 2.даниил кожемяко
 
mms или как просто работать с моделями данных.иван кутузов
mms или как просто работать с моделями данных.иван кутузовmms или как просто работать с моделями данных.иван кутузов
mms или как просто работать с моделями данных.иван кутузов
 
Cобытийная модель zend framework 2, event manager. александр вронский
Cобытийная модель zend framework 2, event manager. александр вронскийCобытийная модель zend framework 2, event manager. александр вронский
Cобытийная модель zend framework 2, event manager. александр вронский
 
My sql
My sqlMy sql
My sql
 
Mongo
MongoMongo
Mongo
 
Rasmus
RasmusRasmus
Rasmus
 

My sql 5.6-new-stable-mmug

  • 1. <Insert Picture Here> 5.6 новая стабильная ветка MySQL Server. Дмитрий Ленев, Март 2013, Москва
  • 2. 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.7 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 3. Основные направления улучшений в MySQL 5.6 ● Оптимизатор/выполнение запросов ● InnoDB ● Репликация ● Расширение типов и новые операции ● Улучшения в безопасности ● performance_schema ● Memcached API для INNODB 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 4. Улучшения в оптимизаторе/выполнении запросов (скорость). ● 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.
  • 5. Index Condition Pushdown Storage 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 21 AND 22; 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. 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.
  • 7. Batched Key Access в соединениях ● Для соединений с доступом к одной из табличек по ключу – Накопить строки из первой таблички в буфере – Запросить строки из второй таблички, с ключем, одним запросом, используя DS MRR – Получить строки по одной от storage engine для соединения (с ссылкой на элемент в буфере) 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Оптимизации в выполнении подзапросов ● Выполнение через материализацию SELECT * FROM t1 WHERE t1.a IN (SELECT t2.b FROM t2 WHERE where_condition); ● Выполнение через semi-join SELECT * FROM nation WHERE n_regionkey IN (SELECT r_regionkey FROM region WHERE 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.
  • 9. Прочие улучшения в оптимизации/выполнении запросов ● Улучшение выполнения запросов с 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.
  • 10. Улучшения в оптимизаторе/выполнении запросов (удобство в использовании) ● Optimizer trace (SET optimizer_trace=..., I_S.OPTIMIZER_TRACE) ● EXPLAIN для INSERT/UPDATE/DELETE EXPLAIN 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.
  • 11. Новые возможности в 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.
  • 12. Новые возможности в 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.
  • 13. Производительность и масштабируемость в 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.
  • 14. Производительность и масштабируемость в 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.
  • 15. Производительность и масштабируемость в 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.
  • 16. Производительность и масштабируемость в 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.
  • 17. Производительность и масштабируемость InnoDB по сравнению с MySQL 5.5 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. Улучшения в репликации (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.
  • 19. Улучшения в репликации (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.
  • 20. Расширения системы типов/операций ● Поддержка микросекунд для 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.
  • 21. Улучшения в обработке ошибок ● GET DIAGNOSTICS GET 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.
  • 22. Улучшения в безопасности ● 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.
  • 23. Улучшения в 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.
  • 24. Новое в PERFORMANCE_SCHEMA ● PERFORMANCE_SCHEMA включена по умолчанию! ● Инструментированы блокировки таблиц, ввод-вывод в таблицы и сетевой ввод-вывод. ● Аггрегирование статистики для блокировок и ввода-вывода ● Инструментированы операторы ● Инструментированы этапы выполнения операторов ● Поддержка digests для операторов и аггрегирование по ним ● Фильтрация по пользователям, сессиям и таблицам ● P_S.HOST_CACHE 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. 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_table WHERE OBJECT_NAME='t1'; OBJECT_ OBJECT_NAME COUNT_STAR COUNT_READ SUM_TIMER_READ COUNT_INSERT SUM_TIMER_INSERT SCHEMA test t1 9 5 16071156 4 53219976 SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME, COUNT_STAR, COUNT_READ, SUM_TIMER_READ FROM performance_schema.table_io_waits_summary_by_index_usage WHERE OBJECT_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.
  • 26. 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_INDE AD_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 1 SELECT 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.
  • 27. 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.
  • 28. PERFORMANCE_SCHEMA: добавлена поддержка digests для операторов и аггрегирование по ним Таблица events_statements_summary_by_digest SELECT 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.
  • 29. Кроме того ● Хранимые процедуры больше не ломаются параллельным DDL ● Table Cache разбит на несколько partitions ● Добавлена поддержка пользовательских аттрибутов для соединения (mysql_options(), P_S.session_connect_attrs) ● Изменены значения по умолчанию для многих параметров! 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. Memcached API для InnoDB ● Daemon plugin для MySQL ● Прямой доступ к InnoDB ● Поддерживает бинарный и текстовый протокол ● Поддерживает значения из нескольких полей ● Опционально поддерживает локальное кэширование ● Поддерживает batch операции для чтения и записи ● Поддерживает простую аутентификацию через SASL 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. Подробнее о 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.