СУБД 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
СУБД 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
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса 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
СУБД 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
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса 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, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Presentación Educación Bni connect - Cómo completar el perfilRoberto Navarro
Powerpoint para realizar el momento de educación sobre cómo completar el perfil de BNI Connect.
Elaborado por Roberto Navarro: http://www.estudioalfa.com
Fuente: http://successnet.czcommunity.com/to-the-next-level/the-bni-connect-checklist/20449/
Traducción: http://www.networkingenesp.com/10-frontpage/112-lalistadeverificacion
Технопарк 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, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Presentación Educación Bni connect - Cómo completar el perfilRoberto Navarro
Powerpoint para realizar el momento de educación sobre cómo completar el perfil de BNI Connect.
Elaborado por Roberto Navarro: http://www.estudioalfa.com
Fuente: http://successnet.czcommunity.com/to-the-next-level/the-bni-connect-checklist/20449/
Traducción: http://www.networkingenesp.com/10-frontpage/112-lalistadeverificacion
Scientix 10th SPWatFCL Brussels 26-28 February 2016: Sure, I’m interested in ...Brussels, Belgium
Session III - Workshop A: Sure, I’m interested in your idea/project, you’ve got 1’
Held during the 10th Science Projects Workshop in the Future Classroom Lab, Brussels, 26-28 February 2016
A white paper on the hard and soft costs for organizations that do not have a personal finance education program in place for employees.
written by:
Heather Davis Richards
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №8 "Конфигурирование базы данных". Лектор - Павел Щербинин.
Сначала объясняются основы конфигурирования и общие принципы настройки. Далее рассказывается об области видимости, о настройке использования памяти, обсуждается размер блока ключей key_cache_block_size. Рассматривается устройство и использование кэша InnoDB, а также кэшей потоков и таблиц. Затем говорится об особенностях ввода/вывода в InnoDB. Далее рассказывается о табличном пространстве, оптимизации файловой сортировки, переменных состояния. Финальная часть лекции посвящена репликации: настройка, синхронизация, топология, планирование пропускной способности, администрирование и обслуживание, проблемы и их решения.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
1. 1. Оператор CREATE TABLE
Оператор CREATE TABLE создает новую таблицу в базе данных.
Имя таблицы должно быть уникальным среди имен таблиц базы данных, хранимых
процедур и представлений, описанных в этой базе данных.
Таблица может содержать, по меньшей мере, один столбец и произвольное количество
ограничений таблицы. Таблица может не храниться в базе данных, все ее строки могут
помещаться в отдельный текстовый файл, находящийся вне базы данных, заданный
предложением EXTERNAL FILE в операторе создания таблицы. В таблицах, которые
хранятся во внешних файлах, могут быть описаны любые типы данных, кроме BLOB.
Недопустимо также использование массивов с любым типом данных. По отношению к
таблицам, хранящимся во внешних файлах, допустимы только операции добавления
новых строк (INSERT) и выборки (SELECT) данных. Операции же изменения
существующих данных (UPDATE) или удаления строк такой таблицы (DELETE)не могут
быть выполнены
2. Операторы DROP
Одним из самых полезных операторов определения данных SQL является оператор DROP
TABLE. Но он одновременно является и одним из самых опасных, поскольку удаляет
таблицу из базы данных вместе со всеми содержащимися в пей данными. Если
необходимо удалить из базы данных таблицу CUSTOMER и все содержащиеся в ней
данные, то можно использовать следующий оператор:
DROP TABLE CUSTOMER
Оператор DROP TABLE не выполняется, если таблица содержит или может содержать
значения, необходимые для соблюдения ограничений ссылочной целостности. Например,
столбец ArtistID таблицы ARTIST может содержать значения, необходимые для
соблюдения ограничения внешнего ключа Customer_Artist_Int_ArtistFK.
3. Оператор изменения таблицы alter table
Оператор ALTER TABLE позволяет изменять структуру существующей таблицы.
Например, вы можете добавлять или удалять колонки, изменять тип существующих
колонок, переименовывать колонки, или саму таблицу. Также можно изменить
комментарий к таблице и тип таблицы.
Синтаксис оператора ALTER TABLE во многих случаях подобен синтаксису CREATE
TABLE.
4. операторы обработки данных select insert update
SELECT применяется для извлечения строк, выбранных из одной или нескольких таблиц.
Выражение select_expression задает столбцы, в которых необходимо проводить выборку.
Кроме того, оператор SELECT можно использовать для извлечения строк, вычисленных
без ссылки на какую-либо таблицу. Например:
mysql> SELECT 1 + 1;
-> 2
Оператор INSERT вставляет новые строки в существующую таблицу. Форма данной
команды INSERT ... VALUES вставляет строки в соответствии с точно указанными в
команде значениями. Форма INSERT ... SELECT вставляет строки, выбранные из другой
таблицы или таблиц. Форма INSERT ... VALUES со списком из нескольких значений
поддерживается в версии MySQL 3.22.5 и более поздних.
2. Оператор UPDATE обновляет столбцы в соответствии с их новыми значениями в строках
существующей таблицы. В выражении SETуказывается, какие именно столбцы следует
модифицировать и какие величины должны быть в них установлены. В
выражении WHERE, если оно присутствует, задается, какие строки подлежат
обновлению. В остальных случаях обновляются все строки. Если задано выражение
ORDER BY, то строки будут обновляться в указанном в нем порядке.
5. операторы обработки данных delete replace load file
Оператор DELETE удаляет из таблицы table_name строки, удовлетворяющие заданным
в where_definition условиям, и возвращает число удаленных записей.
Если оператор DELETE запускается без определения WHERE, то удаляются все строки.
Если действительно необходимо знать число удаленных записей при удалении всех строк,
и если допустимы потери в скорости, то можно использовать команду DELETE в
следующей форме: mysql> DELETE FROM table_name WHERE 1>0;
Оператор REPLACE работает точно так же, как INSERT, за исключением того, что если
старая запись в данной таблице имеет то же значение индекса UNIQUE или PRIMARY
KEY, что и новая, то старая запись перед занесением новой будет удалена. Другими
словами, команда REPLACE не предоставляет доступа к замещаемой записи. В некоторых
старых версиях MySQL такой доступ иногда оказывался возможным, но это был дефект,
который уже исправлен.
Команда LOAD DATA INFILE читает строки из текстового файла и вставляет их в
таблицу с очень высокой скоростью. Если задано ключевое слово LOCAL, то файл
читается с клиентского хоста. Если же LOCAL не указывается, то файл должен
находиться на сервере. (Опция LOCAL доступна в версии MySQL 3.22.6 и более поздних.)
Если текстовые файлы, которые нужно прочитать, находятся на сервере, то из
соображений безопасности эти файлы должны либо размещаться в директории базы
данных, либо быть доступными для чтения всем пользователям.
6. Операторы управления транзакциями
Поддержание механизма транзакций — показатель уровня развитости СУБД. Корректное
поддержание транзакций одновременно является основой обеспечения целостности баз
данных (и поэтому транзакции вполне уместны и в однопользовательских персональных
СУБД), а также составляют базис изолированности пользователей во
многопользовательских системах.
Под транзакцией понимается неделимая с точки зрения воздействия на БД
последовательность операторов манипулирования данными (чтения, удаления, вставки,
модификации) такая, что либо результаты всех операторов, входящих в транзакцию,
отображаются в БД, либо воздействие всех этих операторов полностью отсутствует.
9. Роли
Для удобства управления разрешениями в базах данных SQL Server предоставляет
несколько ролей, которые являются субъектами безопасности, группирующими других
участников. В SQL Server существует два типа ролей уровня базы
данных: предопределенные роли базы данных, стандартные для базы данных, и гибкие
роли базы данных, которые может создать пользователь.
Предопределенные роли базы данных задаются на уровне базы данных и предусмотрены в
каждой базе данных. Члены ролей базы данных db_owner иdb_securityadmin могут
управлять членством в предопределенных ролях базы данных. Но только члены роли базы
данных db_owner могут добавлять членов в предопределенную роль базы
3. данных db_owner. Кроме того, в базе данных msdb имеются специальные
предопределенные роли базы данных.
Каждый член предопределенной роли базы данных может добавлять другие имена входа к
той же роли.
10. Представления
SQL-представление — это виртуальная таблица, составленная из других таблиц или
представлений. Представление не имеет своих собственных данных, а объединяет данные
из таблиц или пердставлений, которые в него входят. Представления создаются с
помощью операторов SELECT. Согласно стандарту SQL-92 представления не могут
включать в себя конструкцию ORDER BY, но Oracle такой вариант допускает.
Представление (VIEW) - объект данных который не содержит никаких данных его
владельца. Это - тип таблицы, чье содержание выбирается из других таблиц с помощью
выполнения запроса. Поскольку значения в этих таблицах меняются, то авто- матически,
их значения могут быть показаны представлением.
11. хранимые процедуры Sql
Как правило, мы в работе с БД используем одни и те же запросы, либо набор
последовательных запросов. Хранимые процедуры позволяют объединить
последовательность запросов и сохранить их на сервере. Это очень удобный инструмент,
и сейчас вы в этом убедитесь. Начнем с синтаксиса:
CREATE PROCEDURE имя_процедуры (параметры)
begin
операторы
end
для чего их использовать? На это существует множество причин, ниже приведены лишь
основные.
• Для упрощения сложных операций за счет инкапсуляции процессов в один блок,
простой для выполнения.
• Для обеспечения непротиворечивости данных и вместе с тем без необходимости
снова и снова воспроизводить одну и ту же последовательность шагов
• Побочным эффектом этого является предотвращение ошибок.
• Для упрощения управления изменениями.
• Поскольку хранимые процедуры обычно сохраняютсяв компилированном виде,
СУБД тратит меньше времени на обработку их команд. Это приводит к повышению
производительности.
12. Триггер
- это SQL процедура, которая срабатывает при каком-нибудь событии (INSERT, DELETE
или UPDATE). Триггеры хранятся и управляются СУБД. Триггеры используются для
поддержания ссылочной целостности данных в одинаковый манер реагируя на события
изменения этих данных. Триггер не может быть вызван или выполнен вручную, СУБД
автоматически вызывает его после модификации данных в соответствующей таблице. В
этом и есть его отличие от хранимых процедур, которые нужно выполнять вручную
вызовом CALL. Также триггер может вызывать другие процедуры.Триггер также может
содержать вызовы INSERT, DELETE и UPDATE внутри себя, таким образом вызывая
другой триггер. Такие триггеры называются вложенными (nested).
4. 13. Управление транзакциями
Управление транзакциями в SQL Server — важный шаг на пути к обеспечению
бесперебойной работы и способ избежать ошибок, связанных с блокировками.
Транзакции позволяют управлять набором команд, которые выполняются в базе данных,
как единым целым. Использование транзакции предоставляют разработчику следующие
преимущества:
1. Если две команды работают внутри одной транзакции – то будут выполнены обе
команды, либо ни одной;
2. Если какая-либо команда внутри транзакции завершится с ошибкой – все команды
транзакции будут отмены и данные вернутся в то состояние, в каком они были до начала
транзакции;
3. Во время выполнения транзакции данные могут оставаться изолированными и
недоступными для других транзакций;
4. После успешного выполнения команды фиксации транзакции данные
гарантированно сохранятся в базе.