Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Собственно говоря, решил лично изучить этот вопрос(практические варианты использования InMemory). Отзовитесь, кто использует, какой эффект? Интересует разумеется не аналог pintable а все что связано с изменением хранения структуры данных, оптимизацией выполнения запросов и т.п.
13 дек 19, 15:58    [22039892]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Интересует один вопрос, есть ли запросы которые ускоряются в InMemory, в разы(относительно обычной БД), предположим в случае нахождения и в том и в другом случае всех данных в памяти? В чем принципиальное отличие от pintable(для старых версий)с точки зрения запросов на чтение?
13 дек 19, 16:46    [22039968]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
МуМу,

там же совершенно разный подход к обработке. pintable лочит страницы в bufferpool + латчи как были так и остаются, в то время как xtp использует hash-таблицы и latch-free.
13 дек 19, 16:54    [22039979]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
МуМу,

у InMemory на свои преимущества есть и недостатки, особенно DBA и Devops характера. Прежде, чем браться за внедрение, надо тщательно изучить все стороны использования, не сосредотачиваться только на производительности.
13 дек 19, 17:20    [22040006]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
МуМу
В чем принципиальное отличие от pintable(для старых версий)с точки зрения запросов на чтение?
pintable - это обычные таблицы, страничная организация, слоты записей на страницах. В общем, pintable - это обычная таблица, они и так в памяти, если её достаточно.

А у таблиц InMemory другая физическая организация хранения, включая хранение блокировок, и версионность, при этом хорошо бы, что бы процедуры тоже были native compilation
Тогда всё будет очень будет быстро, кроме тех манипуляций, которые быстрее на обычных таблицах :-)
13 дек 19, 17:34    [22040037]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
alexeyvg

А у таблиц InMemory другая физическая организация хранения, включая хранение блокировок
...

какие такие блокировки у InMemory-таблиц?
типа их же изобрели, чтобы как раз от блокировок избавиться
13 дек 19, 17:56    [22040084]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
То есть запросы по таблицам InMemory и обычным будут как правило выполнятся(при отсутствии блокировок по обычным) будут выполнятся одно и то же время?(с учетом чтения страниц, наверное разница есть но какая?) По сути технология применяется для максимального параллелизма для операций вставки-изменений. Чудес при этом не бывает - данные могут немного в случае выключения сервера потеряться. По сути отказались от наследия и архитектуры страничных чтений как средство оптимизации работы с диском, достигая при этом высокого параллелизма и более высокого времени отклика. Но для большинства систем данная технология не выстреливает, в основном годится для многопоточных биллинговых(с небольшими транзакциями) систем с невысокими требованиями к устойчивости.(ну потеряем 10-ть последних транзакций - заново введем). Правильно ли я уловил суть;)?
Судя по всему весь в профит в чтении напрямую по хеш индексам(ссылкам), в отличии от издержек с вычитыванием данных по страницам,(наверное в каких то моментах может стать актуален вопрос пропускной возможности шины данных, здесь по идее меньше поток) .
13 дек 19, 19:06    [22040143]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Для понимания может есть у кого примеры? Ну например таблицы заполненные обычные и такие же InMemory, запросы одинаковые и на выходе профит в логических чтениях и времени выполнения? Мне бы сэкономило времени, заранее благодарю.
13 дек 19, 19:12    [22040149]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
МуМу
Для понимания может есть у кого примеры? Ну например таблицы заполненные обычные и такие же InMemory, запросы одинаковые и на выходе профит в логических чтениях и времени выполнения? Мне бы сэкономило времени, заранее благодарю.
Ну вот, нашёл на SQL.RU :-)

Результаты тестирования:
Parameters of TestMS SQL Server 2014average val, secMS SQL Server 2016average val, sec
Table with DURABILITY = SCHEMA_AND_DATA585/584/584/588585,25626/637/610/616622,25
Table with DURABILITY = SCHEMA_AND_DATA with no UNICODE column, BIN610/604/585/606/601,25
Table with DURABILITY = SCHEMA_AND_DATA , UNICODE,неBINполе588/604/614/617605,75
Table with DURABILITY = SCHEMA_ONLY38/37/393847/55/5251,3
Table with DURABILITY = SCHEMA_ONLY with no UNICODE column, BIN44/46/4946,3
Table with DURABILITY = SCHEMA_ONLY , UNICODE,неBINполе53/50/5251,7
Native procedure with DURABILITY = SCHEMA_AND_DATA560/553/559557,3564/584/581576,3
Native procedure with DURABILITY= SCHEMA_ONLY28/26/30/2838/38/3737,7
Disk table614/605/596605633/637/634634,67
13 дек 19, 19:23    [22040160]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Интуитивный кейс, например архитектурно неправильно спроектирована система. Идет получение остатков в цикле по номенклатуре(объединение склад, резерв и т.п.). В этом случае если таблицы перевести в InMemory или если сделать их реплику таблиц(если ограничения не позволяют) то данные запросы за счет отстутствия страничного чтения ускорятся, правильно ли я понимаю?(что то мне кажется что скорость увеличится совсем немного)
13 дек 19, 19:24    [22040162]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Yasha123
alexeyvg

А у таблиц InMemory другая физическая организация хранения, включая хранение блокировок
...

какие такие блокировки у InMemory-таблиц?
типа их же изобрели, чтобы как раз от блокировок избавиться
Да, там же версионность, перепутал, одновременно про блокировки читал, отложилось слово :-)
13 дек 19, 19:28    [22040165]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
alexeyvg,
Ну как то хотелось бы "ВАУ" эффекта, типа вот обычные а вот в памяти. Впрочем буду экспериментировать в понедельник. Хотелось бы понять подход, как минимальными усилиями получить максимальный эффект. Пока лишь догадки.
13 дек 19, 19:30    [22040167]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
МуМу
alexeyvg,
Ну как то хотелось бы "ВАУ" эффекта, типа вот обычные а вот в памяти. Впрочем буду экспериментировать в понедельник. Хотелось бы понять подход, как минимальными усилиями получить максимальный эффект. Пока лишь догадки.
По тесту ВАУ видно для SCHEMA_ONLY :-)
Вполне можно использовать вместо обычных временных таблиц.
13 дек 19, 19:36    [22040170]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
alexeyvg,
Ну на вставку не так интересно, тут все же ограничений много. Хотелось бы тесты на чтение. Если там есть эффект то есть мысли куда можно применить.
13 дек 19, 19:40    [22040174]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
МуМу
alexeyvg,
Ну на вставку не так интересно, тут все же ограничений много. Хотелось бы тесты на чтение. Если там есть эффект то есть мысли куда можно применить.
ИМХО для чтений единственное, где можно что то выиграть - это чтение по одной записи в цикле, и то я не уверен.
В обычных запросах, где джойны, или выборки группы записей, по моему, никаких преимуществ нет.
Это в общем достаточно специфическая технология, а не "замена плохого на хорошее".

Вот умные люди рассуждают о неприменимости InMemory для чтений: https://dba.stackexchange.com/questions/191300/sql-server-in-memory-table-performace
13 дек 19, 19:53    [22040189]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
alexeyvg,
Ну так такой я кейс интуитивно приводил, почему бы и нет?, есть много систем с наследуемой архитектурой, которую возможности поменять нет. Если легко можно включить режим InMemory для нужных таблиц, или сделать репликанты(с подменой через view) и если это даст эффект, то почему бы и нет.
13 дек 19, 20:03    [22040199]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
А вообще некоторый эффект "дежавю", помню переход некоторых систем с DBF на MSSQL. Так вот что забавно там некоторые "запросы" работали быстрее за счет буферизации памяти но при этом не обеспечивая транзакционной целостности, в монопольном режиме работы включался отдельный режим турбо. Проблема получения данных списков в цикле а не единым набором данных - это была боль в переводе на MSSQL. Вот такое складывается впечатление что InMemory это старый DBF на новый лад:) Пока видится применение массовой,параллельной вставки и одиночные запросы в цикле(обязательно с минимальным набором данных, без больших данных). Как только набор данных превышает сетевой или дисковый агрегат - все преимущества теряются.
13 дек 19, 20:31    [22040227]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
МуМу
То есть запросы по таблицам InMemory и обычным будут как правило выполнятся(при отсутствии блокировок по обычным) будут выполнятся одно и то же время?(с учетом чтения страниц, наверное разница есть но какая?) По сути технология применяется для максимального параллелизма для операций вставки-изменений.


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

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



Если используется полная устойчивость то данные даже при потере питания не теряются.
Если устойчивость schema_only, тогда риск конечно есть.

Но для большинства систем данная технология не выстреливает, в основном годится для многопоточных биллинговых(с небольшими транзакциями) систем с невысокими требованиями к устойчивости.(ну потеряем 10-ть последних транзакций - заново введем). Правильно ли я уловил суть;)?
Судя по всему весь в профит в чтении напрямую по хеш индексам(ссылкам), в отличии от издержек с вычитыванием данных по страницам,(наверное в каких то моментах может стать актуален вопрос пропускной возможности шины данных, здесь по идее меньше поток) .



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

Сообщение было отредактировано: 13 дек 19, 21:18
13 дек 19, 21:17    [22040249]     Ответить | Цитировать Сообщить модератору
 Re: Дошли руки до In Memory,отзовитесь кто использует?  [new]
komrad
Member

Откуда:
Сообщений: 5244
alexeyvg
Ну вот, нашёл на SQL.RU :-)


оттуда
Основным хранилищем для таблиц In-Memory является основная память, т.е вся память находится в памяти.

это прекрасно ))
14 дек 19, 00:22    [22040305]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить