2013-09-04 10 views
3

Я пытаюсь вырваться из памяти ...Встроенная память, 16-кратное увеличение производительности?

Я получил CTP1 и попытался встроить память. В Техническом документе описывается синтаксис таблиц In-memory. Я написал несколько запросов, чтобы узнать прирост производительности.

Обычный стол с 1 миллионом записей занимает то же время, что и таблица с оптимизацией памяти?

Только вставка, удаление и обновление гораздо быстрее ...

Я пробовал с процедурами native_compilation тоже, но ни в коем случае, то же самое время.

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

create table dbo.Ord (
    OrdNo integer not null primary key 
    nonclustered hash with (bucket_count=1000000), 
    OrdDate datetime not null, 
    CustCode nvarchar(5) not null 
) 
with (memory_optimized=on) 
go 

Эта таблица заполнена 1 Mio-записями. И нормальный стол

create table dbo.Ordnormal (
    OrdNo integer not null primary key nonclustered , 
    OrdDate datetime not null, 
    CustCode nvarchar(5) not null 
) 
go 

этот стол тоже.

Выбрать с помощью первой таблицы занимает то же время, что и второе. Измерение с заданной статистикой Время включено.

+10

Пожалуйста, предоставьте код, чтобы мы могли видеть, что вы тестировали. –

+0

составить таблицу dbo.Ord (OrdNo целое число, не нулевой первичный ключ некластерный хэш с (bucket_count = 1000000), OrdDate даты и времени не нулевой, CustCode NVARCHAR (5) не нулевой) с (memory_optimized = вкл) идти это таблица заполняется 1 млн записей и обычной таблицы создать таблицу dbo.Ordnormal (OrdNo целое число, не нулевой первичный ключ некластеризованным, OrdDate даты и времени не нулевой, CustCode NVARCHAR (5) не равно нулю) идти эту таблицу тоже Выбрать с первой таблицей в то же время, что и в секундах Измерение с помощью Установите статистику Время на –

+3

Опубликуйте весь тестовый код, включая DDL, и методологию тестирования, которую вы использовали в сообщении, а не как комментарий. –

ответ

-1

InMemory может помочь вам, если (и только если) ваш запрос требует меньше ввода-вывода на диск, потому что данные могут быть найдены в памяти. В вашем случае я ожидаю, что время будет потрачено на передачу результирующих 1 mio строк клиенту.

Многие вещи вокруг inMemory могут пойти не так. Прежде всего это огромный маркетинговый ажиотаж. Если у вас слишком много данных, оно не вписывается в память, если у вас нет огромных объемов памяти (за огромные суммы денег). Иногда более разумный подход с тремя уровнями и более для доступа был бы лучшим способом: память, SSD, быстрый диск, медленный диск, ...

Единственная база данных, о которой я знаю, способна обрабатывать такие уровни - Teradata. Но, возможно, другие тоже могут это сделать. Комментарии приветствуются :-)

+0

ok спасибо, , но меньше IO 16x прирост производительности в документе? –

+0

Я ожидал бы, что число 16 пришло, сравнивая скорость доступа к памяти по сравнению со средней скоростью, если доступ к диску сравнен со средним временем, которое требуется запросу для ввода-вывода. Поскольку каждый запрос отличается, и каждое оборудование отличается, оно не может быть более приблизительной оценкой. С какими базами данных, таблицами и размерами запросов вы работаете? И какое оборудование у вас есть? – jboi

+0

Где же 16-кратное число? См. Мой ответ, почему ни один номер не имеет смысла. – usr

0

Различные операции имеют разные рабочие характеристики. Это должно быть довольно очевидным заявлением.

Hekaton не ускоряет Everyting по точно фактор 10. Это также должно быть довольно очевидно.

Чтобы узнать, что Hekaton может и не может сделать, измерьте различные операции и рабочие нагрузки. Узнайте, как быстро работают отдельные операции DML. Когда вы понимаете, насколько быстрыми являются отдельные примитивы, вы создали умственную модель производительности Хекатона в своей голове. Это позволяет оценить, как будут работать более сложные рабочие нагрузки и почему.

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

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

2

Вы не описали природу операторов SELECT (например, выполняете ли вы поиск или агрегаты), которые вы измеряете, и то, что вы измеряете (прошедшее время, время процессора и т. Д.), Поэтому это сложно чтобы дать прямой ответ. Например, если вы отправляете эти 1 миллион строк клиенту, ваша производительность, скорее всего, будет привязана к сети, и вы вряд ли увидите много преимуществ из-за времени с истекшим временем выполнения. Оптимизация производительности - это тема, полная нюансов.

Независимо от того, этот paper подробно описывает Hekaton и должен помочь вам в понимании реализации SQL Server в памяти.