Содержание
- 2. Физическая организация данных Файлы данных Можно распределять по разным дискам (в зависимости от сценария работы) Файл
- 3. Физическая организация данных в SQL Server БД SQL Server хранится в одном или нескольких файлах (.mdf,
- 4. Организация данных на странице Страница с данными хранит записи таблицы Одна запись хранится на странице целиком
- 5. Дисковые операции Количество чтений/записей – это количество дисковых страниц Операции могут быть логические и физические
- 6. Организация данных на странице Размер страницы – 8К Страница хранит записи только одной таблицы Все атрибуты
- 7. Дисковые операции
- 8. Логарифмический поиск Чтобы найти данные в таблице по условию, необходимо выполнить сканирование таблицы – это O(N)
- 9. Сбалансированные деревья Не подходят для хранения во внешней памяти! AVL-дерево Красно-чёрное дерево
- 10. B-Tree Оптимизировано под страничную организацию данных во внешней памяти (один узел – одна страница) Сбалансированное (длина
- 11. B-Tree
- 12. B-Tree Для примера допустим: на одну страницу помещается 3 записи данных или 4 ключа индекса (на
- 13. B-Tree
- 14. B-Tree
- 15. B-Tree
- 16. B-Tree
- 17. B-Tree
- 18. B-Tree
- 19. B-Tree
- 20. B-Tree
- 21. B-Tree
- 22. B-Tree Кластерный индекс Некластерный индекс
- 23. B-Tree Кластерный индекс Листовые узлы – страницы с данными Может быть только один для таблицы Некластерный
- 24. Когда использовать? СЕЛЕКТИВНОСТЬ! СЕЛЕКТИВНОСТЬ!
- 25. B*-Tree Индексы повышают эффективность Операции поиска записей с хорошей селективностью Поддержка уникальности значений атрибутов Операции, требующие
- 26. B-Tree Кластерный индекс лучше выбирать для атрибутов: Короткое значение ключа (т.к. ключи к.и. используются как ссылки
- 27. Пример
- 28. B-Tree Why “B”?
- 29. B*-Tree Included columns Можно построить индекс по нескольким атрибутам, а можно включить атрибуты посредством INCLUDE (и
- 30. B*-Tree FILLFACTOR Задаёт объём занятого пространства на листовых страницах, которое выделяет СУБД при создании/перестройке индекса По
- 31. B*-Tree Фрагментация данных External fragmentation Internal fragmentation Способы дефрагментации: INDEX REORGANIZE INDEX REBUILD CREATE WITH DROP
- 32. Что почитать http://www.brentozar.com/ https://www.youtube.com/user/BrentOzar … nikolay.shestakov@rubius.com
- 33. Оптимизация запросов в реляционных БД Часть II Николай Александрович Шестаков Томский Политехнический Университет Rubius
- 34. Оптимизация и выполнение запроса Алгоритмы выполнения соединений Этапы жизненного цикла запроса План выполнения и выполнение запроса
- 35. Join algorithms Nested loop join Inner join for each row R1 in outer table for each
- 36. Join algorithms Merge join
- 37. Join algorithms Hash join
- 38. Join algorithms
- 39. Query optimization and execution Query Life Cycle
- 40. Query optimization and execution Optimization Goal – to find a good enough execution plan, quickly enough
- 41. Query optimization and execution Посмотреть план выполнения: Можно в Management Studio, включив опцию “Show execution plan”
- 42. План выполнения Estimated execution plan Actual execution plan
- 43. План выполнения Actual execution plan показывает не только оцениваемые показатели, но и реальные
- 44. План выполнения
- 45. План выполнения Планы можно выводить в виде: Графический XML Табличный (через SET STATISTICS PROFILE ON) Текстовый
- 46. Query optimization and execution Query execution
- 47. Query optimization and execution Query execution
- 48. Статистики /* drop table ForeignKeyTable drop table PrimaryTable */ create table PrimaryTable (Id int identity primary
- 49. Статистики
- 50. Статистики
- 51. Статистики
- 52. Статистики Статистики обновляются автоматически Иногда эвристики автообновления не срабатывают Тогда нужно обновить вручную Если Actual Rows
- 53. Кеширование планов выполнения Планы кешируются Разные значения параметров –> один кеш Parameter Sniffing OPTIMIZE FOR UNKNOWN
- 54. Query optimization and execution Просмотр кешированных планов выполнения select top 50 substring(qt.text, (qs.statement_start_offset/2)+1, (( case qs.statement_end_offset
- 55. Что почитать http://www.brentozar.com/ https://www.youtube.com/user/BrentOzar … nikolay.shestakov@rubius.com
- 56. Транзакции ACID Atomicity Consistency Isolation Durability
- 57. Транзакции Atomicity – всё или ничего
- 58. Транзакции Durability – если транзакция выполнена, она выполнена (результат устойчив к системным сбоям)
- 59. Транзакции Consistency Данные согласованы в начале транзакции и после окончания транзакции (но не обязательно внутри транзакции)
- 60. Transactions Isolation Выполняющиеся параллельно транзакции логически не влияют друг на друга Принцип сериализации: транзакции, выполняющиеся параллельно,
- 61. Уровни изоляции транзакций Read Uncommitted Разрешены грязные чтения Read Committed Чтения только зафиксированных данных, но повторное
- 62. Уровни изоляции транзакций Read Uncommitted Быстр Никого не ждёт Наибольшая вероятность получить несогласованные данные При чтении
- 63. Уровни изоляции транзакций Read Committed Ждёт освобождения exclusive lock Есть вероятность получить изменённые данные при повторных
- 64. Уровни изоляции транзакций Repeatable Read Ждёт освобождения exclusive lock При чтении ставит Shared lock При повторных
- 65. Уровни изоляции транзакций Serializable Обеспечивает 100% изоляцию Ждёт освобождения exclusive lock При чтении ставит Shared lock
- 66. Locks Shared Lock Блокирует изменение (попытки Update и Exclusive), позволяет чтение. Несколько транзакций могут установить одновременно
- 67. Deadlocks Вероятность взаимных блокировок повышается, если: Большое количество параллельных транзакций, которые меняют данные Используются долгие сложные
- 68. Snapshot Isolation Multiversion Concurrency Control Используется timestamp для обозначения версии записи Транзакции читают версии записей, соответствующие
- 69. Snapshot Isolation Snapshot Isolation исключает аномалии грязных, повторных и фантомных чтений Отсутствуют блокировки при чтении Snapshot
- 70. Snapshot Isolation write-skew anomaly Serializable Snapshot Isolation in PostgreSQL (2012) http://drkp.net/papers/ssi-vldb12.pdf
- 72. Скачать презентацию