Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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-bit) в Linux (Ubuntu 22.04.4 LTS) <X64>

Първо, създайте група база данни и файлове със следната команда:

Ако не създадете група, оптимизирана за паметта, ще бъде докладвана грешка при създаване на таблица, оптимизирана за паметта:Не мога да създам таблици, оптимизирани за паметта. За да се създадат таблици, оптимизирани за паметта, базата данни трябва да има MEMORY_OPTIMIZED_FILEGROUP, който е онлайн и съдържа поне един контейнер.

Създайте две таблици, оптимизирани за паметта, за тестване – една постоянна и една неперсистентна, с следната команда:

Таблицата за оптимизация на паметта има две опции (ИЗДРЪЖЛИВОСТ = SCHEMA_AND_DATA), (ИЗДРЪЖЛИВОСТ = SCHEMA_ONLY)
Таблица за издръжливост: ИЗДРЪЖЛИВОСТ =SCHEMA_AND_DATA
Неперсистентна таблица: ИЗДРЪЖЛИВОСТ =SCHEMA_ONLY

Тестовете се вмъкват отделно в таблицата за оптимизация на паметта100 000 статии(всъщност 100002 елементи) данни, командата е следната:





Persistence се включва за 28 секунди и за 1 секунда без persistence

Препратка:

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.




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



Сценарий:
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com