Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 1141|Ответ: 1

[Источник] Оптимизированные для памяти таблицы для баз данных SQL SERVER

[Скопировать ссылку]
Опубликовано 2025-5-10 21:28:18 | | | |
Введение в таблицы, оптимизированные для памяти

Таблицы, оптимизированные для памяти, — это таблицы, созданные с помощью CREATE TABLE (Transact-SQL).

По умолчанию оптимизированные для памяти таблицы полностью сохраняются. Как и транзакции на (традиционных) дисковых таблицах, транзакции в таблицах, оптимизированных по памяти, являются полностью атомарными, последовательными, изолированными и устойчивыми (ACID). Оптимизированные для памяти таблицы и нативно скомпилированные хранимые процедуры поддерживают только часть функций Transact-SQL.

Начиная с SQL Server 2016 и Azure SQL Database, нет ограничений на встроенные OLTP-страницы или кодовые страницы.

Первичная память в таблице, оптимизированной по памяти, является первичной памятью. Читайте строки из таблицы из памяти и записывайте их в память. Другая копия данных таблицы хранится на диске, но только для сохранения. Для получения дополнительной информации о постоянных таблицах см. раздел «Создание и управление хранением объектов для оптимизации памяти». Данные в таблицах, оптимизированных для памяти, читаются с диска только при восстановлении базы данных (например, после перезагрузки сервера).

Для большего повышения производительности встроенный OLTP поддерживает постоянные таблицы с транзакционной постоянной задержкой. Задержанные постоянные транзакции сохраняются на диске вскоре после фиксации транзакции, а управление возвращается клиенту. В обмен на улучшение производительности зафиксированные транзакции, не сохранённые на диске, теряются в случае сбоя сервера или отказа.

В дополнение к стандартным таблицам, оптимизируемым для постоянной памяти, SQL Server поддерживает незаписанные, непостоянные таблицы, оптимизированные для памяти, и их данные не сохраняются на диске. Это означает, что транзакции в этих таблицах не требуют ввода диска, но если происходит сбой сервера или отказ, данные теряются.

OLTP в памяти интегрируется с SQL Server, обеспечивая бесшовный опыт во всех аспектах, таких как разработка, развертывание, управляемость и поддержка. База данных может содержать как объекты в памяти, так и объекты на диске.

Строки в таблице, оптимизированной по памяти, имеют версии. Это означает, что каждая строка таблицы может иметь несколько версий. Все версии строк поддерживаются в одной и той же структуре данных таблицы. Версионирование строк используется для обеспечения одновременного чтения и записи в одну и ту же строку. Для получения дополнительной информации о одновременном чтении и записи в одну строку см. раздел «Вещи в таблице оптимизации памяти».

Приблизительные шаги и ограничения использования

Стремянка:

(1) Создать базу данных и MEMORY_OPTIMIZED_DATA группу файлов (изменить базу данных добавить файловую группу, каждая база данных может иметь только одну MEMORY_OPTIMIZED_DATA группу файлов!!) )
(2) Добавить папку в группу файлов для хранения файлов данных (пожалуйста, не создавайте эту папку заранее, используйте alter database add file() в 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, который находится онлайн и содержит как минимум один контейнер.

Создайте две таблицы, оптимизированные по памяти, для тестирования — одну постоянную и одну неперсистентную, с помощью следующей команды:

Таблица оптимизации памяти имеет два варианта (ENDURANCE = SCHEMA_AND_DATA), (DURABILITY = SCHEMA_ONLY)
Таблица долговечности: ДОЛГОВЕЧНОСТЬ =SCHEMA_AND_DATA
Нестойкая таблица: ПРОЧНОСТЬ =SCHEMA_ONLY

Тесты вставляются отдельно в таблицу оптимизации памяти100 000 статей(на самом деле 100002 элементов) данных, команда выглядит следующим образом:





Включение персистентности занимает 28 секунд и 1 секунда без сохранения

Ссылка:

Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.




Предыдущий:Обожаю перерабатывать программное обеспечение для контроля качества ноутбуков
Следующий:Синтаксис C# 8.0 использует индекс и диапазон
 Хозяин| Опубликовано 2025-5-10 21:36:40 |
Обычная таблица вставляет 100 000 данных и выполняется за 18 секунд. Как показано ниже:



Сценарий:
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com