Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №8 "Конфигурирование базы данных". Лектор - Павел Щербинин.
Сначала объясняются основы конфигурирования и общие принципы настройки. Далее рассказывается об области видимости, о настройке использования памяти, обсуждается размер блока ключей key_cache_block_size. Рассматривается устройство и использование кэша InnoDB, а также кэшей потоков и таблиц. Затем говорится об особенностях ввода/вывода в InnoDB. Далее рассказывается о табличном пространстве, оптимизации файловой сортировки, переменных состояния. Финальная часть лекции посвящена репликации: настройка, синхронизация, топология, планирование пропускной способности, администрирование и обслуживание, проблемы и их решения.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №5 "Определение узких мест". Лектор - Павел Щербинин.
Вначале рассказывается о подсистемах хранения: MyISAM, InnoDB, Memory, о критериях выбора подсистем хранения, приводятся практические примеры. Затем обсуждается тема индексирования (B-tree, хеш-индексы) и EXPLAIN (столбцы id, table, possible_keys, key, key_len).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №4 "Расширенные возможности работы с базами данных. Триггеры и хранимые процедуры"
Лектор - Павел Щербинин.
Первая часть лекции посвящена хранимым процедурам (использование, примеры кода, аспекты безопасности при использовании хранимых процедур): LOOP, REPEAT, WHILE, HANDLER, курсоры, EXECUTE. Во второй части рассказывается о триггерах: BEFORE, AFTER, INSTEAD OF, о специальных таблицах inserted, updated и deleted, об использовании триггеров для поддержания целостности и бизнес-логики, о проблемах при использовании триггеров, приводятся примеры кода. В завершающей части лекции обсуждаются вопросы, связанные с транзакциями: концепция A.C.I.D.; уровни изоляции ANSI/ISO (SET TRANSACTION ISOLATION LEVEL); взаимовлияние транзакций и проблемы lost update, dirty read, non-repeatable read и phantom read; технология MVCC (контроль версионирования конкуренции); конкуренция; параллельность и согласованность.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №5 "Определение узких мест". Лектор - Павел Щербинин.
Вначале рассказывается о подсистемах хранения: MyISAM, InnoDB, Memory, о критериях выбора подсистем хранения, приводятся практические примеры. Затем обсуждается тема индексирования (B-tree, хеш-индексы) и EXPLAIN (столбцы id, table, possible_keys, key, key_len).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №4 "Расширенные возможности работы с базами данных. Триггеры и хранимые процедуры"
Лектор - Павел Щербинин.
Первая часть лекции посвящена хранимым процедурам (использование, примеры кода, аспекты безопасности при использовании хранимых процедур): LOOP, REPEAT, WHILE, HANDLER, курсоры, EXECUTE. Во второй части рассказывается о триггерах: BEFORE, AFTER, INSTEAD OF, о специальных таблицах inserted, updated и deleted, об использовании триггеров для поддержания целостности и бизнес-логики, о проблемах при использовании триггеров, приводятся примеры кода. В завершающей части лекции обсуждаются вопросы, связанные с транзакциями: концепция A.C.I.D.; уровни изоляции ANSI/ISO (SET TRANSACTION ISOLATION LEVEL); взаимовлияние транзакций и проблемы lost update, dirty read, non-repeatable read и phantom read; технология MVCC (контроль версионирования конкуренции); конкуренция; параллельность и согласованность.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Seminarul Internaţional „Implementarea tehnologiei IR (repozitorii instituţionale): Sistemul DSpace”, 14-15 aprilie 2011. Chişinău, Ambasada Regală a Norvegiei în România, Asociaţia Bibliotecarilor din Republica Moldova, Consorţiul REM, Programul EIFL-OA, Biblioteca Ştiinţifică a Academiei de Studii Economice din Moldova. Instructor: Kuzma KUDIM, Institutul Sisteme Software al Academiei de Ştiinţe din Kiev, Ucraina.
Seminarul Internaţional „Implementarea tehnologiei IR (repozitorii instituţionale): Sistemul DSpace”, 14-15 aprilie 2011. Chişinău, Ambasada Regală a Norvegiei în România, Asociaţia Bibliotecarilor din Republica Moldova, Consorţiul REM, Programul EIFL-OA, Biblioteca Ştiinţifică a Academiei de Studii Economice din Moldova. Instructor: Kuzma KUDIM, Institutul Sisteme Software al Academiei de Ştiinţe din Kiev, Ucraina.
Seminarul Internaţional „Implementarea tehnologiei IR (repozitorii instituţionale): Sistemul DSpace”, 14-15 aprilie 2011. Chişinău, Ambasada Regală a Norvegiei în România, Asociaţia Bibliotecarilor din Republica Moldova, Consorţiul REM, Programul EIFL-OA, Biblioteca Ştiinţifică a Academiei de Studii Economice din Moldova. Instructor: Kuzma KUDIM, Institutul Sisteme Software al Academiei de Ştiinţe din Kiev, Ucraina.
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
MyRocks: табличный движок для MySQL на основе RocksDB.
Презентация с HighLoad++ 2015.
Рассказывается о принципах работы LSM-Trees, их реализации в RocksDB, зачем и как был сделан MyRocks, с какими проблемами столкнулись и как их решили.
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
Онлайн-опросы неизменно показывают — всех нас очень интересуют две вещи: а) как писать наиболее эффективные SQL-запросы, б) как «читать» такие запросы, а точнее, как понимать, что именно делает или будет делать СУБД при их выполнении.
Эти две неразрывно связанные друг с другом темы чрезвычайно обширны, SQL-искусству можно (и нужно) учиться годами. Во время нашей очередной встречи в прямом эфире мы затронем некоторые аспекты обеих.
ЧАСТЬ 1: EXPLAIN
Алексей Ермаков. Как читать и интерпретировать вывод команды EXPLAIN
Команда EXPLAIN — основной инструмент анализа запросов, позволяющий разобраться, каким образом запрос будет выполняться и как можно его ускорить. Для сложных запросов вывод может быть довольно громоздким и его становится сложно читать. Я расскажу, из каких частей состоит план запроса, на какие «маркеры» в нём следует обращать внимание в первую очередь и как на это реагировать.
ЧАСТЬ 2: ADVANCED SQL
Николай Самохвалов. SQL современный и «продвинутый»
«Я не волшебник, я только учусь». Продвинутому SQL нас постоянно учат такие видные гуру как Markus Winand и Макс Богук. Рекурсивные CTE, LATERAL JOIN, виртуозная работа с массивами и строками, window functions и прочие модные штучки, которые помогут вам в дрессировке вашего Постгреса, — я постараюсь сделать хороший обзор, а если вдруг тема покажется интересной, то в следующих сеансах группового Постгреса мы обязательно пригласим настоящих гуру :)
В этой презентации мы расскажем о своем опыте применения этого хранилища на примере одной из самых высоконагруженных подсистем — хранилища Класс!ов. В данный момент в системе хранится около 50 миллиардов записей о Класс!, что занимает в сумме около 8 Тб. Для того чтобы реализовать такое хранилище пришлось отойти от классического способа работы с Cassandra. Мы расскажем об этом, а также о том, как Cassandra устроена под капотом, её сильные и слабые стороны, какие решения мы принимали и что мы изменили в Cassandra, чтобы сделать наше хранилище более высокопроизводительным и надежным.
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)Ontico
В современном мире многие разработчики перестали стараться писать высокопроизводительный код. Порой их можно понять: в наше время прекрасных облачных решений дешевле докупить дополнительных серверов, чем тратить время на оптимизацию кода. Но что, если у вас нет такой возможности? Что, если для текущей задачи вы ограничены одной машиной или даже одним потоком?
В этом докладе мы обсудим некоторые подходы, которые помогают выжимать максимум производительности из современного железа и позволяют разгонять программы, которые, казалось бы, разогнать нельзя. В числе прочего будем обсуждать следующие вещи: CPU cache, Instruction Level Parallelism, False sharing, Branch Prediction, SEE/AVX instructions и т.д.
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Seminarul Internaţional „Implementarea tehnologiei IR (repozitorii instituţionale): Sistemul DSpace”, 14-15 aprilie 2011. Chişinău, Ambasada Regală a Norvegiei în România, Asociaţia Bibliotecarilor din Republica Moldova, Consorţiul REM, Programul EIFL-OA, Biblioteca Ştiinţifică a Academiei de Studii Economice din Moldova. Instructor: Kuzma KUDIM, Institutul Sisteme Software al Academiei de Ştiinţe din Kiev, Ucraina.
Seminarul Internaţional „Implementarea tehnologiei IR (repozitorii instituţionale): Sistemul DSpace”, 14-15 aprilie 2011. Chişinău, Ambasada Regală a Norvegiei în România, Asociaţia Bibliotecarilor din Republica Moldova, Consorţiul REM, Programul EIFL-OA, Biblioteca Ştiinţifică a Academiei de Studii Economice din Moldova. Instructor: Kuzma KUDIM, Institutul Sisteme Software al Academiei de Ştiinţe din Kiev, Ucraina.
Seminarul Internaţional „Implementarea tehnologiei IR (repozitorii instituţionale): Sistemul DSpace”, 14-15 aprilie 2011. Chişinău, Ambasada Regală a Norvegiei în România, Asociaţia Bibliotecarilor din Republica Moldova, Consorţiul REM, Programul EIFL-OA, Biblioteca Ştiinţifică a Academiei de Studii Economice din Moldova. Instructor: Kuzma KUDIM, Institutul Sisteme Software al Academiei de Ştiinţe din Kiev, Ucraina.
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
MyRocks: табличный движок для MySQL на основе RocksDB.
Презентация с HighLoad++ 2015.
Рассказывается о принципах работы LSM-Trees, их реализации в RocksDB, зачем и как был сделан MyRocks, с какими проблемами столкнулись и как их решили.
#RuPostgresLive 4: как писать и читать сложные SQL-запросыNikolay Samokhvalov
Онлайн-опросы неизменно показывают — всех нас очень интересуют две вещи: а) как писать наиболее эффективные SQL-запросы, б) как «читать» такие запросы, а точнее, как понимать, что именно делает или будет делать СУБД при их выполнении.
Эти две неразрывно связанные друг с другом темы чрезвычайно обширны, SQL-искусству можно (и нужно) учиться годами. Во время нашей очередной встречи в прямом эфире мы затронем некоторые аспекты обеих.
ЧАСТЬ 1: EXPLAIN
Алексей Ермаков. Как читать и интерпретировать вывод команды EXPLAIN
Команда EXPLAIN — основной инструмент анализа запросов, позволяющий разобраться, каким образом запрос будет выполняться и как можно его ускорить. Для сложных запросов вывод может быть довольно громоздким и его становится сложно читать. Я расскажу, из каких частей состоит план запроса, на какие «маркеры» в нём следует обращать внимание в первую очередь и как на это реагировать.
ЧАСТЬ 2: ADVANCED SQL
Николай Самохвалов. SQL современный и «продвинутый»
«Я не волшебник, я только учусь». Продвинутому SQL нас постоянно учат такие видные гуру как Markus Winand и Макс Богук. Рекурсивные CTE, LATERAL JOIN, виртуозная работа с массивами и строками, window functions и прочие модные штучки, которые помогут вам в дрессировке вашего Постгреса, — я постараюсь сделать хороший обзор, а если вдруг тема покажется интересной, то в следующих сеансах группового Постгреса мы обязательно пригласим настоящих гуру :)
В этой презентации мы расскажем о своем опыте применения этого хранилища на примере одной из самых высоконагруженных подсистем — хранилища Класс!ов. В данный момент в системе хранится около 50 миллиардов записей о Класс!, что занимает в сумме около 8 Тб. Для того чтобы реализовать такое хранилище пришлось отойти от классического способа работы с Cassandra. Мы расскажем об этом, а также о том, как Cassandra устроена под капотом, её сильные и слабые стороны, какие решения мы принимали и что мы изменили в Cassandra, чтобы сделать наше хранилище более высокопроизводительным и надежным.
Оптимизации уровня CPU, Андрей Акиньшин (JetBrains)Ontico
В современном мире многие разработчики перестали стараться писать высокопроизводительный код. Порой их можно понять: в наше время прекрасных облачных решений дешевле докупить дополнительных серверов, чем тратить время на оптимизацию кода. Но что, если у вас нет такой возможности? Что, если для текущей задачи вы ограничены одной машиной или даже одним потоком?
В этом докладе мы обсудим некоторые подходы, которые помогают выжимать максимум производительности из современного железа и позволяют разгонять программы, которые, казалось бы, разогнать нельзя. В числе прочего будем обсуждать следующие вещи: CPU cache, Instruction Level Parallelism, False sharing, Branch Prediction, SEE/AVX instructions и т.д.
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №1 "Введение и начало проектирования"
Лектор - Павел Щербинин.
В лекции обсуждаются значение и роли баз данных в IT, даются определения БД и СУБД. Затем рассказывается о реляционной модели данных, об основах реляционной алгебры. Далее говорится непосредственно о проектировании БД: каковы критерии оценки модели данных, особенности концептуального проектирования, этапы проектирования, что такое логическое проектирование. Остальная часть лекции посвящена типам данных MySQL: NULL, целые числа, числа с плавающей точкой, бинарные, строки, дата и время.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №3 "Выборка данных (продолжение). Транзакции"
Лектор - Павел Щербинин.
Лекция начинается с рассказа о добавлении данных и операторе INSERT, о модификации данных и операторе UPDATE, об удалении данных и операторе DELETE. Затем небольшая часть лекции посвящена пользовательским переменным. После этого даётся информация о подзапросах: SUBQUERIES, ROW SUBQUERIES, SUBQUERIES in FROM. Далее говорится об агрегации (UNION), о семействе функций JOIN и соединении таблиц, а в завершение лекции — о понятии VIEW (каковы преимущества, ограничения и особенности, алгоритмы использования и изменение).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №2 "Модификация данных. Выборка данных (начало)"
Лектор - Павел Щербинин.
Сначала завершается рассмотрение типа данных MySQL «Дата и время». Затем рассказывается о создании таблиц (CREATE TABLE): create_definition, column_definition, reference_defenition, обновление кортежа в родительском отношении. Далее обсуждается процедура изменения таблицы (ALTER TABLE), выборка данных и оператор SELECT, а также фильтрация (формирование групп, агрегаторы).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Лекция 3. Распределённая файловая система HDFSTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 1. Введение в Big Data и MapReduceTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Badoo Development
Мы уже около 3-х лет используем HandlerSocket в нашей инфраструктуре сайта badoo.com. За это время мы накопили опыт решения характерных для Handlersocket проблем, появляющихся при использовании.
Несколько команд внутри Баду активно используют HS для решения разноплановых задач мобильных и настольных приложений Баду. Где-то мы используем HS как замену Memcached, где-то как простой поисковый механизм, где-то как хранилище типа ключ-значение. Наш HS-кластер содержит более 30 серверов, обрабатывая порядка 8000 запросов/сек.
Спикер также предоставляет написанный им код библиотеки-клиента для Handlersocket на PHP.
Про что доклад:
• что это вообще такое;
• чем является HS и чем не является;
• внутреннее устройство и работа HS;
• протокол;
• примеры использования в Баду, с цифрами и графиками;
• особенности: шардирование, Percona Server, постоянные соединения (бенефиты, проблемы и их решения), tips & tricks;
• полезные сслыки, ответы на FAQ.
Доклад рассчитан на highload-разработчиков, работающих с реляционными БД.
Тема: Компания Кодерлайн провела вебинар на тему «Оптимизация – стоимость владения»
Вебинар будет интересен руководители IT-подразделений, IT-специалисты, заинтересованные лица
Ведущий: Александр ЛОГАЧЕВ
Описание:
На вебинаре поговорим об оптимизации запросов и кода
Программа вебинара:
1. Запросы – использование индексов, оптимизация архитектуры
2. РЛС – влияние на производительность
3. Ответы на вопросы
Будем благодарны за ваши отзывы :)
Similar to СУБД 2013 Лекция №8 "Конфигурирование базы данных" (20)
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
2. Конфигурирование
• /etc/my.cnf
• /etc/mysql/my.cnf
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 ‘Default
options’
Default options are read from the following files in the
given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
3. Область видимости
• Переменная query_cache_size имеет глобальную область
видимости.
• Переменная sort_buffer_size имеет глобальное значение по
умолчанию, но может быть изменена на уровне сеанса.
• Переменная join_buffer_size имеет глобальное значение по
умолчанию, может быть изменена на уровне сеанса, но,
кроме того, для каждого запроса, в котором соединяется
несколько таблиц, можно выделить по одному буферу на
операцию соединения, то есть для одного запроса может
существовать несколько буферов соединения.
4. Область видимости
• SET sort_buffer_size = <value>;
• SET GLOBAL sort_buffer_size = <value>;
• SET @@sort_buffer_size := <value>;
• SET @@session.sort_buffer_size := <value>;
• SET @@global.sort_buffer_size := <value>;
5. Настройка использования
памяти
1. Определить абсолютный верхний предел объема памяти,
которую MySQL может использовать.
2. Определить, сколько памяти MySQL будет использовать на
каждое соединение, например для буферов сортировки и
временных таблиц.
3. Определить, сколько памяти нужно операционной системе
для нормальной работы. Сюда следует включить и память для
других программ, работающих на той же машине, например
периодически выполняемых заданий.
4. Если это имеет смысл, отдайте всю оставшуюся память под
кэши MySQL, например, под пул буферов InnoDB.
6. Настройка использования
памяти
key_buffer_size
25 – 50 % от общего объема памяти, зарезервированного
для кэшей
key_buffer_1.key_buffer_size = 1G
key_buffer_2.key_buffer_size = 1G
CACHE INDEX t1, t2 IN key_buffer_1;
LOAD INDEX INTO CACHE t1, t2;
Эту SQL-команду можно поместить в файл, выполняемый
MySQL на этапе запуска. Имя файла задается с помощью
параметра init_file; в нем может быть несколько SQL-команд,
каждая в отдельной строке
7. Настройка использования
памяти
key_buffer_size
25 – 50 % от общего объема памяти, зарезервированного
для кэшей
key_buffer_1.key_buffer_size = 1G
key_buffer_2.key_buffer_size = 1G
CACHE INDEX t1, t2 IN key_buffer_1;
LOAD INDEX INTO CACHE t1, t2;
Эту SQL-команду можно поместить в файл, выполняемый
MySQL на этапе запуска. Имя файла задается с помощью
параметра init_file; в нем может быть несколько SQL-команд,
каждая в отдельной строке
8. Настройка использования
памяти
Коэффициент попаданий в кэш
key_reads *100
100 − ---------------------------
key_reads_requests
Коэффициент заполненности буфера
key_blocks_unused * key_cache_block_size * 100
100 − --------------------------------------------------------------------
key_buffer_size
Количество непопаданий в кэш за секунду
key_reads / uptime
9. Размер блока ключей
key_cache_block_size
1. MyISAM запрашивает блок ключей размером 1 Кбайт с диска.
2. ОС считывает страницу данных размером 4 Кбайт с диска,
кэширует ее, а затем передает MyISAM затребованный 1
Кбайт.
3. ОС отбрасывает закэшированные данные, замещая их
какими-то другими.
4. MyISAM модифицирует блок ключей размером 1 Кбайт и
просит операционную систему записать его обратно на диск.
5. ОС считывает ту же самую страницу размером 4 Кбайт с диска
в свой кэш, модифицирует в ней тот килобайт, который
изменил MyISAM, и записывает все 4 Кбайт обратно на диск.
10. Кеш InnoDB
innodb_buffer_pool_size
до 80% физической памяти
В отличие от кэша ключей MyISAM, в пуле буферов InnoDB
кэшируются не только индексы, там также хранятся сами данные,
буфер вставок, блокировки и другие внутренние структуры. В
InnoDB пулбуферов используется также для реализации
отложенных операций записи и позволяет объединить несколько
таких процедур, чтобы затем выполнить их последовательно
innodb_max_dirty_pages_pct
говорит InnoDB о допустимом количестве «грязных»
(модифицированных) страниц в пуле буферов
11. Кеш потоков, кеш таблиц
thread_cache_size
определяет максимальное количество потоков в кэше
SHOW STATUS LIKE 'Threads_created';
SHOW STATUS LIKE 'Threads_connected';
table_open_cache
кэш открытых таблиц
table_definition_cache
кэш определений таблиц
12. Ввод / вывод в InnoDB
delay_key_write
OFF
MyISAM сбрасывает измененные блоки из буфера ключей
после каждой записи, если только таблица не блокирована
командой LOCK TABLES.
ON
Включен режим отложенной записи ключей, но только для
таблиц, созданных с параметром DELAY_KEY_WRITE.
ALL
Для всех таблиц типа MyISAM используется отложенная
запись
ключей
13. Ввод / вывод в InnoDB
• Если сервер аварийно завершает работу, а блоки не были
сброшены на диск, то индекс будет испорчен.
• Если было отложено много операций записи, то MySQL
потратит больше времени на закрытие таблицы, поскольку
вынуждена ждать завершения записи буферов на диск
• По тем же причинам команда FLUSH TABLES может занимать
много времени.
• Не сброшенные «грязные» блоки в буфере ключей могут не
оставить места для новых блоков, считываемых с диска. В
таком случае выполнение запроса будет приостановлено на
время, пока MyISAM не освободит достаточно места в буфере
ключей.
15. Ввод / вывод в InnoDB
innodb_log_file_size
общий максимальный размер файла логов
транзакций
innodb_log_files_in_group
количество файлов в группе
innodb_log_buffer_size
размер буфера лога транзакций
16. Ввод / вывод в InnoDB
innodb_flush_log_at_trx_commit
0 - Писать буфер в файл журнала и сбрасывать журнал на
устройство постоянного хранения (диск) раз в секунду, но
ничего не делать в момент фиксации транзакции.
1 - Писать буфер в файл журнала и сбрасывать его на
устройство постоянного хранения при каждой фиксации
транзакции.
2 - Писать буфер в файл журнала при каждой фиксации, но
не сбрасывать его на устройство постоянного хранения
17. Табличное пространство
innodb_data_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:1G;ibdata2:1G;ibdata3:1G
Чтобы табличное пространство могло расти, когда место
заканчивается, можно сделать последний файл автоматически
расширяемым:
...ibdata3:1G:autoextend
...ibdata3:1G:autoextend:max:2G
innodb_file_per_table
отдельный файл на каждую таблицу
18. Оптимизация файловой
сортировки
max_length_for_sort_data
Двухпроходный алгоритм применяется, если суммарная
длина всех столбцов, отбираемых запросом, плюс длина
столбцов, упоминаемых во фразе ORDER BY, превышает
max_length_for_sort_data байтов.
max_sort_length
При сортировке по столбцам типа BLOB или TEXT MySQL
принимает во внимание только префикс, а остаток значения
игнорирует. Длина такого префикса задается параметром
max_sort_length.
19. Переменные состояния
SHOW GLOBAL STATUS;
mysqladmin extended - r - i60
Aborted_clients
Если эта переменная со временем растет, проверьте,
корректно ли закрываются соединения. Если нет, обратите
внимание на производительность сети, а также на
конфигурационную переменную max_allowed_packet.
Aborted_connects
Значение этой переменной должно быть близко к нулю.
Если это не так, то, возможно, имеют место проблемы с сетью.
20. Переменные состояния
Binlog_cache_disk_use и Binlog_cache_use
Если отношение Binlog_cache_disk_use к Binlog_cache_use
велико, попробуйте увеличить значение binlog_cache_size.
Самый лучший подход – увеличить параметр binlog_cache_size и
посмотреть, уменьшится ли число непопаданий в кэш.
Bytes_received и Bytes_sent
Эти значения помогают понять, не слишком ли велик
трафик в направлении к серверу или от него. Возможно,
причина таится где-то в вашем коде
21. Переменные состояния
Created_tmp_disk_tables
Если это значение велико, то возможно одно из двух:
либо запросы создают временные таблицы в результате
выборки столбцов типа BLOB или TEXT, либо недостаточно
велики значения конфигурационных параметров tmp_table_size
и/или max_heap_table_size.
Handler_read_rnd_next
Отношение Handler_read_rnd_next / Handler_read_rnd
дает приблизительную оценку среднего размера полного
сканирования таблиц. Если оно велико, то, возможно, следует
оптимизировать схему, индексы или запросы.
22. Переменные состояния
Key_blocks_used
Если величина Key_blocks_used * key_cache_block_size
гораздо меньше, чем параметр key_buffer_size на прогретом
сервере, то размер буфера ключей (key_buffer_size) больше
необходимого, и вы только впустую растрачиваете память.
Key_reads
Понаблюдайте за количеством операций чтения в
секунду и посмотрите, насколько близко это значение
приближается к предельным показателям подсистемы
ввода/вывода.
23. Переменные состояния
Open_tables и Opened_tables
Сравните это значение с величиной параметра
table_cache. Если количество открываемых таблиц
(Opened_tables) в секунду велико, то, вероятно, размер кэша
таблиц (table_cache) недостаточен.
Select_full_join
Полное соединение – это соединение без индексов,
такая операция может очень сильно «посадить»
производительность. Лучше, чтобы их вовсе не было, даже
одного в минуту может быть много. Обнаружив соединение без
индексов, примите все меры к оптимизации запросов.
24. Переменные состояния
Sort_merge_passes
Большое значение этой переменной означает, что надо
бы увеличить размер буфера сортировки (sort_buffer_size), быть
может, только ради некоторых запросов. Проверьте запросы и
найдите среди них те, которые приводят к сортировке (filesort).
Возможно, их удастся оптимизировать.
Threads_created
Если это значение велико или растет, то, возможно, стоит
увеличить параметр thread_cache_size. Переменная
Threads_cached показывает, сколько потоков уже находится в
кэше.
25. Репликация
Распространение данных
Обычно репликация в MySQL потребляет не очень большую часть
пропускной способности сети, к тому же ее можно в любой момент остановить
и затем возобновить. Это полезно, если хранение копии данных происходит в
географически удаленном пункте, например в другом центре обработки
данных.
Балансировка нагрузки
С помощью репликации можно распределить запросы на чтение
между несколькими серверами MySQL; в приложениях с интенсивным чтением
эта тактика работает очень хорошо. Реализовать несложное балансирование
нагрузки можно, внеся совсем немного изменений в код.
26. Репликация
Резервное копирование
Репликация – это ценное подспорье для резервного копирования.
Однако подчиненный сервер все же не может использоваться в качестве
резервной копии и не является заменой настоящему резервному копированию.
Высокая доступность и аварийное переключение на резервный сервер
(failover)
Репликация позволяет исправить ситуацию, при которой сервер MySQL
является единственной точкой отказа приложения. Хорошая система
аварийного переключения при отказе, имеющая в составе реплицированные
подчиненные серверы, способна существенно сократить время простоя.
Тестирование новых версий MySQL
Очень часто на подчиненный сервер устанавливают новую версию
MySQL и перед тем как ставить ее на промышленные серверы, проверяют, что
все запросы работают нормально.
27. Репликация
1. Главный сервер записывает изменения данных в двоичный журнал. Эти
записи называются событиями двоичного журнала.
2. Подчиненный сервер копирует события двоичного журнала в свой журнал
ретрансляции (relay log).
3. Подчиненный сервер воспроизводит события из журнала ретрансляции,
применяя изменения к собственным данным.
28. Настройка репликации
1. Завести учетные записи репликации на каждом
сервере.
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.*
TO repl@’192.168.0.%’ IDENTIFIED BY ‘p4ssword’;
2. Сконфигурировать главный и подчиненный сервера.
3. Сказать подчиненному серверу, чтобы он соединился с
главным и начал реплицировать данные с него.
30. Настройка репликации
3. Сказать подчиненному серверу, чтобы он соединился с
главным и начал реплицировать данные с него.
CHANGE MASTER TO MASTER_HOST=’server1’,
MASTER_USER=’repl’, MASTER_PASSWORD=’p4ssword’,
MASTER_LOG_FILE=’mysql-bin.000001’,
MASTER_LOG_POS=0;
SHOW SLAVE STATUS;
START SLAVE;
31. Синхронизация репликации
• Мгновенный снимок данных главного сервера в
некоторый момент времени.
• Текущий файл журнала главного сервера и смещение
от начала этого файла в точности на тот момент
времени, когда был сделан мгновенный снимок.
Вместе они называются координатами репликации,
так как однозначно идентифицируют позицию в
двоичном журнале. Найти координаты репликации
вам поможет команда SHOW MASTER STATUS.
• Файлы двоичных журналов главного сервера с
момента мгновенного снимка до текущего момента.
32. Синхронизация репликации
Холодная копия
Остановить сервер, который впоследствии станет главным, и скопировать
файлы с него на подчиненный сервер. Недостаток такого решения очевиден: в
течение всего времени копирования главный сервер должен быть остановлен.
Горячая копия
Если все таблицы имеют тип MyISAM, то можно воспользоваться командой
mysqlhotcopy, которая копирует файлы с работающего сервера.
Использование mysqldump
Если все таблицы имеют тип InnoDB, то можно воспользоваться такой
командой:
mysqldump --single-transaction --all-databases --master-data=1 --host=server1 |
mysql --host=server2
С помощью мгновенного снимка LVM или резервной копии
Если известны координаты в нужном двоичном журнале, можно
воспользоваться мгновенным снимком LVM или резервной копией.
На основе другого подчиненного сервера
Серьезный недостаток клонирования другого подчиненного сервера состоит
в том, что подчиненный сервер может быть рассинхронизирован с главным.
33. Правила репликации
• У каждого подчиненного сервера MySQL может быть только
один главный.
• У каждого подчиненного сервера должен быть уникальный
идентификатор.
• Один главный сервер может иметь много подчиненных (иными
словами, у подчиненного сервера может быть много
«братьев»).
• Подчиненный сервер может распространять полученные от
главного изменения далее, то есть выступать в роли главного
сервера для своих подчиненных; для этого следует включить
режим log_slave_updates.