Вступ до таблиць, оптимізованих пам'яттю
Таблиці, оптимізовані для пам'яті, — це таблиці, створені за допомогою CREATE TABLE (Transact-SQL).
За замовчуванням таблиці, оптимізовані пам'яттю, є повністю збереженими. Як і транзакції на (традиційних) дискових таблицях, транзакції в таблицях, оптимізованих пам'яттю, є повністю атомарними, послідовними, ізольованими та стійкими (ACID). Таблиці, оптимізовані пам'яттю, та нативно скомпільовані збережені процедури підтримують лише підмножину функцій Transact-SQL.
Починаючи з SQL Server 2016 та Azure SQL Database, немає обмежень щодо спеціалізованих OLTP-сторінок або кодових сторінок у пам'яті.
Основна пам'ять таблиці з оптимізацією пам'яті є первинною пам'яттю. Читайте рядки з таблиці з пам'яті і записуйте їх у пам'ять. Інша копія даних таблиці зберігається на диску, але лише для збереження. Для отримання додаткової інформації про постійні таблиці дивіться розділ Створення та керування зберіганням об'єктів для оптимізації пам'яті. Дані в таблицях, оптимізованих пам'яттю, зчитуються з диска лише під час відновлення бази даних (наприклад, після перезавантаження сервера).
Для більшого підвищення продуктивності OLTP у пам'яті підтримує постійні таблиці з транзакційною стійкою затримкою. Затримані постійні транзакції зберігаються на диску незабаром після фіксації транзакції, а контроль повертається клієнту. В обмін на покращення продуктивності зафіксовані транзакції, які не зберігаються на диск, втрачаються у разі збою сервера або аварійного перемикання.
Окрім стандартних таблиць, оптимізованих для стабільної пам'яті, SQL Server підтримує незаписані, непостійні таблиці, оптимізовані пам'яттю, і їхні дані не зберігаються на диску. Це означає, що транзакції в цих таблицях не потребують введення диска, але якщо відбувається збій сервера або аварійне переключення, дані втрачаються.
OLTP у пам'яті інтегрується з SQL Server, забезпечуючи безшовний досвід у всіх аспектах, таких як розробка, розгортання, керованість і підтримка. База даних може містити як об'єкти в пам'яті, так і об'єкти на диску.
Рядки в таблиці, оптимізованій пам'яттю, є версіяними. Це означає, що кожен рядок у таблиці може мати кілька версій. Усі версії рядків підтримуються в одній структурі таблиць. Версія рядків використовується для забезпечення одночасного читання та запису в один рядок. Для отримання додаткової інформації про одночасне читання та запис у один рядок дивіться розділ Things in the Memory Optimization Table.
Приблизні кроки та обмеження використання
Кроки:
(1) Створити базу даних і MEMORY_OPTIMIZED_DATA групу файлів (змінити базу даних, додати файлову групу, кожна база даних може мати лише одну MEMORY_OPTIMIZED_DATA групу файлів!!) ) (2) Додайте папку до групи файлів для зберігання файлів даних (будь ласка, не створюйте цю папку заздалегідь, використовуйте alter database add file() to filegroup) (3) Створіть таблиці, оптимізовані для збереження/непостійної пам'яті (SQL Server 2014 за замовчуванням зберігається), а також потрібно визначити первинний ключ на основі неагрегованого хеш-індексу. Хешовані індекси — єдиний підтримуваний тип індексу в таблицях, оптимізованих пам'яттю. (4) Використання локально скомпільованих збережених процедур: Таблиці, оптимізовані пам'яттю, підтримують локально скомпільовані збережені процедури, якщо ці процедури посилаються лише на таблиці, оптимізовані пам'яттю.
Межа:
(1) Таблиця, оптимізована пам'яттю, повинна бути розміщена під базою даних разом із МІСТИТЬ MEMORY_OPTIMIZED_DATA файлову групу. (2) Таблиця, оптимізована пам'яттю, повинна визначати первинний ключ на основі неагрегованого хеш-індексу, і таблиця має бути визначенаПеревірка зовнішніх ключів або обмежень не підтримується (3) Таблиця оптимізації пам'яті повинна мати достатньо пам'яті, інакше операції, такі як вставка оновлень, будуть невдалими. (4) SQL Server 2014 має багато обмежень щодо цих таблиць. Наприклад, вони не підтримують зовнішні ключі або перевірку обмежень (що схоже на рушій пам'яті MySQL), вониПоля IDENTITY або тригери DML також не підтримуються。
Використовуйте туторіал
Версії бази даних такі:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64) 25 вер 2024 17:34:41 Авторські права (C) 2022 Microsoft Corporation Enterprise Edition: Ліцензування на основі ядер (64-біт) на Linux (Ubuntu 22.04.4 LTS) <X64>
Спочатку створіть групу бази даних і файлів за допомогою наступної команди:
Якщо ви не створите групу, оптимізовану пам'яттю, при створенні таблиці, оптимізованої пам'яттю, буде зафіксована помилка:Не можу створити таблиці, оптимізовані для пам'яті. Щоб створити таблиці, оптимізовані пам'яттю, база даних повинна мати MEMORY_OPTIMIZED_FILEGROUP, який є онлайн і має принаймні один контейнер.
Створіть дві таблиці, оптимізовані пам'яттю для тестування — одну постійну, одну неперсистенту, з наступною командою:
Таблиця оптимізації пам'яті має два варіанти (DURABILITY = SCHEMA_AND_DATA), (DURABILITY = SCHEMA_ONLY) Таблиця довговічності: ДОВГОВІЧНІСТЬ =SCHEMA_AND_DATA Нестійка таблиця: ДОВГОВІЧНІСТЬ =SCHEMA_ONLY
Тести вставляються окремо до таблиці оптимізації пам'яті100 000 статей(фактично 100002 елементів) даних, команда виглядає так:
Увімкнення персистентності займає 28 секунд і 1 секунду без збереження。
Посилання:
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно. |