MySQL по максимуму. 3-е издание: оптимизация, резервное копирование, репликация (Russian Edition)
معرفی کتاب «MySQL по максимуму. 3-е издание: оптимизация, резервное копирование, репликация (Russian Edition)» نوشتهٔ Шварц, Бэрон, Зайцев, Петр, Ткаченко, Вадим، منتشرشده توسط نشر Питер; Питер در سال 2018. این کتاب در فرمت pdf، زبان ru ارائه شده است.
Предисловие......Page 17 Структура книги......Page 18 Версии программного обеспечения и их доступность......Page 21 Условные обозначения......Page 22 О примерах кода......Page 23 Благодарности ко второму изданию......Page 24 Благодарности к первому изданию......Page 27 Логическая архитектура MySQL......Page 29 Оптимизация и выполнение......Page 31 Блокировки чтения/записи......Page 32 Детальность блокировок......Page 33 Транзакции......Page 35 Уровни изолированности......Page 37 Взаимоблокировки......Page 38 Ведение журнала транзакций......Page 39 Транзакции с MySQL......Page 40 Управление конкурентным доступом с помощью многоверсионности......Page 42 Подсистемы хранения в MySQL......Page 43 Подсистема хранения InnoDB......Page 45 Подсистема хранения MylSAM......Page 48 Другие встроенные подсистемы хранения данных MySQL......Page 50 Подсистемы хранения сторонних разработчиков......Page 52 Выбор подходящей подсистемы хранения......Page 55 Преобразования таблиц......Page 59 Хронология MySQL......Page 61 Модель развития MySQL......Page 65 Итоги главы......Page 66 Зачем нужно эталонное тестирование......Page 67 Стратегии эталонного тестирования......Page 69 Тактики эталонного тестирования......Page 73 Проектирование и планирование эталонных тестов......Page 74 Должно ли быть длительным эталонное тестирование?......Page 75 Фиксация производительности и состояния системы......Page 76 Получение точных результатов......Page 78 Прогон эталонного теста и анализ результатов......Page 80 Важность построения графика......Page 82 Полностековые инструменты......Page 84 Инструменты покомпонентного тестирования......Page 85 Примеры эталонного тестирования......Page 87 http_load 87......Page 88 MySQL Benchmark Suite......Page 89 sysbench......Page 90 Инструмент dbt2 TPC-C из комплекта Database Test Suite......Page 95 Инструмент Percona’s TPCC-MySQL......Page 98 Итоги главы......Page 101 Введение в оптимизацию производительности......Page 102 Оптимизация с помощью профилирования......Page 105 Интерпретация профиля......Page 107 Профилирование приложения......Page 109 Профилирование рабочей нагрузки сервера......Page 114 Профилирование отдельных запросов......Page 119 Диагностика редко возникающих проблем......Page 126 Проблемы одиночного запроса или всего сервера?......Page 127 Фиксация данных диагностики......Page 132 Кейс по диагностике......Page 138 Таблицы USER STATISTICS......Page 147 Итоги главы......Page 148 Выбор оптимальных типов данных......Page 151 Целые числа......Page 153 Вещественные числа......Page 154 Строковые типы......Page 155 Типы Date и Time......Page 162 Битовые типы данных......Page 164 Выбор идентификаторов......Page 166 Подводные камни проектирования схемы в MySQL......Page 169 Нормализация и денормализация......Page 171 Достоинства и недостатки денормализованной схемы......Page 172 Сочетание нормализации и денормализации......Page 173 Кэшированные и сводные таблицы......Page 174 Материализованные представления......Page 176 Таблицы счетчиков......Page 177 Ускорение работы команды ALTER TABLE......Page 179 Модификация одного лишь irm-файла......Page 180 Быстрое построение индексов MylSAM......Page 182 Итоги главы......Page 183 Глава 5. Повышение производительности с помощью индексирования......Page 184 Типы индексов......Page 185 Преимущества индексов......Page 196 Изоляция столбца......Page 197 Префиксные индексы и селективность индекса......Page 198 Многостолбцовые индексы......Page 201 Выбор правильного порядка столбцов......Page 203 Кластерные индексы......Page 206 Покрывающие индексы......Page 217 Использование просмотра индекса для сортировки......Page 222 Упакованные (сжатые по префиксу) индексы......Page 224 Избыточные и дублирующиеся индексы......Page 225 Индексы и блокировки......Page 228 Кейсы по индексированию......Page 230 Поддержка нескольких видов фильтрации......Page 231 Устранение дополнительных условий поиска по диапазону......Page 233 Оптимизация сортировки......Page 234 Обслуживание индексов и таблиц......Page 235 Поиск и исправление повреждений таблицы......Page 236 Обновление статистики индекса......Page 237 Уменьшение фрагментации индекса и данных......Page 239 Итоги главы......Page 240 Почему запросы бывают медленными......Page 243 Основная причина замедления: оптимизируйте доступ к данным......Page 244 Не запрашиваете ли вы лишние данные у базы?......Page 245 Не слишком ли много данных анализирует MySQL?......Page 246 Один сложный или несколько простых запросов?......Page 250 Разбиение запроса на части......Page 251 Декомпозиция соединения......Page 252 Основные принципы выполнения запросов......Page 253 Клиент-серверный протокол MySQL......Page 254 Кэш запросов......Page 257 Процесс оптимизации запроса......Page 258 Подсистема выполнения запросов......Page 272 Ограничения оптимизатора MySQL......Page 273 Коррелированные подзапросы......Page 274 Ограничения UNION......Page 278 Хеш-соединения......Page 279 Непоследовательный просмотр индекса......Page 280 Функции MIN() и МАХ()......Page 282 Подсказки оптимизатору запросов......Page 283 Оптимизация запросов с COUNT()......Page 287 Оптимизация подзапросов......Page 290 Оптимизация GROUP BY и DISTINCT......Page 291 Оптимизация GROUP BY WITH ROLLUP......Page 292 Оптимизация LIMIT и OFFSET......Page 293 Оптимизация SQL_CALC_FOUND_ROWS......Page 294 Оптимизация UNION......Page 295 Переменные, определяемые пользователем......Page 296 Построение таблицы очередей в MySQL......Page 303 Вычисление расстояния между двумя точками......Page 306 Применение пользовательских функций......Page 310 Итоги главы......Page 311 Секционированные таблицы......Page 312 Как работает секционирование......Page 313 Типы секционирования......Page 314 Как использовать секционирование......Page 316 Что может пойти не так......Page 317 Оптимизация запросов к секционированным таблицам......Page 320 Объединенные таблицы......Page 321 Представления......Page 324 Представления и производительность......Page 327 Ограничения представлений......Page 329 Ограничения внешнего ключа......Page 330 Хранение кода внутри MySQL......Page 331 Хранимые процедуры и функции......Page 334 Триггеры......Page 335 События......Page 338 Сохранение комментариев в хранимом коде......Page 339 Курсоры......Page 340 Подготовленные операторы......Page 341 Оптимизация подготовленных операторов......Page 342 SQL-интерфейс для подготовленных операторов......Page 343 Ограничения подготовленных операторов......Page 345 Функции, определяемые пользователем......Page 346 Плагины......Page 347 Кодировка и схемы упорядочения......Page 348 Использование кодировок в MySQL......Page 349 Выбор кодировки и схемы упорядочения......Page 352 Как кодировка и схема упорядочения влияют на запросы......Page 353 Полнотекстовый поиск......Page 356 Полнотекстовые запросы на естественном языке......Page 358 Булев полнотекстовый поиск......Page 360 Компромиссы полнотекстового поиска и обходные пути......Page 361 Настройка и оптимизация полнотекстового поиска......Page 364 Распределенные транзакции......Page 365 Внутренние ХА-транзакции......Page 366 Внешние ХА-транзакции......Page 367 Как MySQL проверяет попадание в кэш......Page 368 Как кэш использует память......Page 370 Когда полезен кэш запросов......Page 373 Как настраивать и обслуживать кэш запросов......Page 376 InnoDB и кэш запросов......Page 380 Общие оптимизации кэша запросов......Page 381 Итоги главы......Page 382 Глава 8. Оптимизация параметров сервера......Page 385 Основы конфигурации MySQL......Page 386 Синтаксис, область видимости и динамичность......Page 387 Побочные эффекты установки переменных......Page 389 Приступая к работе......Page 392 Итеративная оптимизация с помощью эталонного тестирования......Page 393 Чего делать не следует......Page 395 Создание конфигурационного файла MySQL......Page 397 Настройка использования памяти......Page 402 Сколько памяти нужно соединению......Page 403 Выделение памяти для кэшей......Page 404 Буферный пул InnoDB......Page 405 Кэш ключей MylSAM......Page 407 Кэш таблиц......Page 410 Словарь данных InnoDB......Page 412 InnoDB......Page 413 MylSAM......Page 428 InnoDB......Page 430 MylSAM......Page 432 Настройка с учетом рабочей нагрузки......Page 433 Оптимизация работы с полями типа BLOB и TEXT......Page 434 Оптимизация файловой сортировки......Page 436 Завершение базовой конфигурации......Page 437 Настройки безопасности и готовности к работе......Page 439 Дополнительные настройки InnoDB......Page 442 Итоги главы......Page 445 Что ограничивает производительность MySQL......Page 446 Что лучше: быстрые процессоры или много процессоров......Page 447 Масштабирование на несколько процессоров и ядер......Page 450 Поиск баланса между памятью и дисками......Page 453 Произвольный и последовательный ввод/вывод......Page 454 Кэширование, чтение и запись......Page 455 Что такое рабочее множество......Page 456 Определение эффективного соотношения «память — диск»......Page 457 Выбор жестких дисков......Page 459 Твердотельные хранилища данных......Page 461 Обзор флеш-памяти......Page 462 Флеш-технологии......Page 463 Эталонное тестирование флеш-памяти......Page 465 Твердотельные диски......Page 466 Устройства хранения РС1е......Page 468 Когда стоит использовать флеш-устройства......Page 469 Использование технологии Flashcache......Page 471 Оптимизация MySQL для твердотельных хранилищ данных......Page 473 Выбор оборудования для подчиненного сервера......Page 477 Оптимизация производительности с помощью RAID......Page 478 Отказ, восстановление и мониторинг RAID......Page 481 Выбор между аппаратной и программной реализациями RAID......Page 482 Конфигурация RAID и кэширование......Page 484 Сети хранения данных и сетевые системы хранения данных......Page 487 Эталонные тесты SAN-сетей......Page 488 Использование SAN-сетей через NFS или SMB......Page 489 Надо ли использовать SAN......Page 490 Использование нескольких дисковых томов......Page 492 Конфигурация сети......Page 494 Выбор операционной системы......Page 497 Выбор файловой системы......Page 498 Многопоточность......Page 501 Подкачка......Page 502 Как интерпретировать выдачу vmstat......Page 505 Как интерпретировать выдачу iostat......Page 506 Другие полезные инструменты......Page 508 Машина с нагруженным процессором......Page 509 Машина с нагруженной подсистемой ввода/вывода......Page 510 Итоги главы......Page 511 Обзор репликации......Page 514 Проблемы, решаемые репликацией......Page 516 Как работает репликация......Page 517 Настройка репликации......Page 518 Создание аккаунтов репликации......Page 519 Конфигурирование главного и подчиненного серверов......Page 520 Запуск подчиненного сервера......Page 521 Инициализация подчиненного сервера на основе существующего......Page 524 Рекомендуемая конфигурация репликации......Page 526 Покомандная репликация......Page 528 Построчная репликация......Page 529 Какая репликация лучше, покомандная или построчная......Page 530 Файлы репликации......Page 532 Отправка событий репликации другим подчиненным серверам......Page 534 Фильтры репликации......Page 535 Топологии репликации......Page 537 Один главный сервер с несколькими подчиненными......Page 538 «Главный сервер — главный сервер» в режиме «активный — активный»......Page 539 «Главный сервер — главный сервер» в режиме «активный — пассивный»......Page 541 «Главный сервер — главный сервер с подчиненными»......Page 542 Кольцевая репликация......Page 543 Главный сервер, главный сервер-распространитель и подчиненные......Page 544 Дерево или пирамида......Page 546 Пользовательские схемы репликации......Page 547 Репликация и планирование производительности......Page 553 Почему репликация не помогает масштабированию записи......Page 554 Когда подчиненные серверы начнут отставать......Page 555 Администрирование и обслуживание репликации......Page 556 Измерение отставания подчиненного сервера......Page 557 Как узнать, согласованы ли подчиненные серверы с главным......Page 559 Восстановление синхронизации подчиненного сервера с главным......Page 560 Смена главного сервера......Page 561 Смена ролей в конфигурации «главный сервер — главный сервер»......Page 566 Ошибки, вызванные повреждением или утратой данных......Page 567 Смешивание транзакционных и нетранзакционных таблиц......Page 571 Использование различных подсистем хранения на главном и подчиненном серверах......Page 572 Неуникальный идентификатор сервера......Page 573 Зависимости от нереплицируемых данных......Page 574 Отсутствующие временные таблицы......Page 575 Репликация не всех обновлений......Page 576 Конкуренция, вызванная блокировками при выполнении SELECT в InnoDB......Page 577 Запись на обоих главных серверах в конфигурации «главный — главный».......Page 579 Слишком большое отставание репликации......Page 581 Чрезмерно большие пакеты от главного сервера......Page 585 Ограничения репликации......Page 586 Насколько быстро работает репликация......Page 587 Расширенные возможности репликации MySQL ~......Page 589 Прочие технологии репликации......Page 592 Итоги главы......Page 594 Что такое масштабируемость......Page 596 Планирование масштабируемости......Page 603 Перед тем как приступать к масштабированию......Page 604 Вертикальное масштабирование......Page 605 Масштабирование по горизонтали......Page 607 Масштабирование с помощью консолидации......Page 626 Масштабирование кластеризацией......Page 627 Обратное масштабирование......Page 631 Балансирование нагрузки......Page 634 Прямое подключение......Page 636 Представляем посредника......Page 641 Балансирование нагрузки при наличии одного главного и нескольких подчиненных серверов......Page 644 Итоги главы......Page 645 Что такое высокая доступность......Page 647 Причины простоев......Page 649 Сокращение среднего времени между отказами......Page 650 Сокращение среднего времени восстановления......Page 652 Устранение отдельных критических точек......Page 653 Разделяемое хранилище данных или реплицированный диск......Page 654 Синхронная репликация MySQL......Page 658 Избыточность на основе репликации......Page 662 Аварийное переключение и восстановление после сбоев......Page 664 Виртуальные IP-адреса и передача IP-адреса......Page 666 Решения на основе посредника......Page 667 Итоги главы......Page 669 Глава 13. MySQL в облаке......Page 672 Достоинства, недостатки и мифы облака......Page 673 Экономика MySQL в облаке......Page 675 Масштабирование MySQL и НА в облаке......Page 677 Четыре основных ресурса......Page 678 Производительность MySQL в облачном хостинге......Page 679 База данных MySQL как услуга......Page 684 Amazon RDS......Page 685 Другие решения DBaaS......Page 686 Итоги главы......Page 687 Типичные проблемы......Page 689 Проблемы веб-сервера......Page 692 Кэширование на уровне ниже приложения......Page 696 Кэширование на уровне приложения......Page 697 Стратегии управления кэшем......Page 699 Кэширование иерархий объектов......Page 701 Предварительная генерация содержимого......Page 702 Кэш как инфраструктурный компонент......Page 703 Расширение MySQL......Page 704 Альтернативы MySQL......Page 705 Итоги главы......Page 706 Глава 15. Резервное копирование и восстановление......Page 707 Зачем нужно резервное копирование......Page 708 Определение требований к восстановлению......Page 709 Проектирование резервного копирования в MySQL......Page 711 Оперативное или автономное резервное копирование......Page 712 Логическое и физическое резервное копирование......Page 714 Что копировать......Page 717 Подсистемы хранения и согласованность......Page 719 Репликация......Page 722 Формат двоичного журнала......Page 723 Безопасное удаление старых двоичных журналов......Page 724 Снятие логической резервной копии......Page 725 Снимки файловой системы......Page 728 Восстановление из резервной копии......Page 736 Восстановление из физических файлов......Page 737 Восстановление из логической копии......Page 739 Восстановление на конкретный момент времени......Page 742 Более сложные методы восстановления......Page 744 Восстановление InnoDB......Page 746 Percona XtraBackup......Page 749 Zmanda Recovery Manager......Page 750 mysqldump......Page 751 Скрипты резервного копирования......Page 752 Итоги главы......Page 755 Средства организации интерфейса......Page 757 Утилиты командной строки......Page 758 Инструменты мониторинга......Page 759 Инструменты мониторинга с открытым исходным кодом......Page 760 Коммерческие системы мониторинга......Page 763 Мониторинг из командной строки с использованием Innotop......Page 765 Итоги главы......Page 769 Percona Server......Page 771 Maria D В......Page 772 Drizzle......Page 773 Итоги......Page 775 Команда SHOW STATUS......Page 777 Команда SHOW INNODB STATUS......Page 784 Команда SHOW PROCESSLIST......Page 799 Команда SHOW ENGINE MUTEX STATUS......Page 800 Состояние репликации......Page 801 База данных INFORMATION_SCHEM А......Page 802 Performance Schema......Page 804 Итоги......Page 805 Копирование файлов......Page 806 Эталонные тесты копирования файлов......Page 809 Вызов команды EXPLAIN......Page 811 Столбцы результата команды EXPLAIN......Page 814 Вывод плана выполнения в виде дерева......Page 825 Улучшения в версии MySQL 5.6......Page 826 Ожидание блокировки на уровне сервера......Page 827 Ожидание блокировки в InnoDB......Page 832 Типичный поиск с помощью Sphinx......Page 837 Зачем использовать Sphinx......Page 841 Обзор архитектуры......Page 849 Специальные возможности......Page 852 Примеры практической реализации......Page 858 Итоги......Page 865 How can you bring out MySQL’s full power? With High Performance MySQL, you’ll learn advanced techniques for everything from designing schemas, indexes, and queries to tuning your MySQL server, operating system, and hardware to their fullest potential. This guide also teaches you safe and practical ways to scale applications through replication, load balancing, high availability, and failover.Updated to reflect recent advances in MySQL and InnoDB performance, features, and tools, this third edition not only offers specific examples of how MySQL works, it also teaches you why this system works as it does, with illustrative stories and case studies that demonstrate MySQL’s principles in action. With this book, you’ll learn how to think in MySQL.Learn the effects of new features in MySQL 5.5, including stored procedures, partitioned databases, triggers, and viewsImplement improvements in replication, high availability, and clusteringAchieve high performance when running MySQL in the cloudOptimize advanced querying features, such as full-text searchesTake advantage of modern multi-core CPUs and solid-state disksExplore backup and recovery strategies—including new tools for hot online backups MySQL architecture and history Benchmarking MySQL Profiling server performance Optimizing schema and data types Indexing for high performance Query performance optimization Advanced MySQL features Optimizing server settings Operating system and hardware optimization Replication Scaling MySQL High availability MySQL in the cloud Application-level optimization Backup and recovery Tools for MySQL users Forks and variants of MySQL MySQL server status Transferring large files Using EXPLAIN Debugging locks Using Sphinx with MySQL. High Performance MySQL teaches you advanced techniques in depth so you can bring out MySQL's full power. Learn how to design schemas, indexes, queries, and advanced MySQL features for maximum performance, and get detailed guidance for tuning your MySQL server, operating system, and hardware to their fullest potential. A guide for MySQL administrators covers such topics as benchmarking, server performance, indexing, queries, hardware optimization, replication, scaling, cloud hosting, and backup and recovery
دانلود کتاب MySQL по максимуму. 3-е издание: оптимизация, резервное копирование, репликация (Russian Edition)