|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Пара вопросов: а) есть 2 таблицы и 1 процедура, работающая с ними б) таблицы я конвертнул в In-Memory Optimized Tables, процедуры остались почти нетронутыми. Этого достаточно? или надо конвертнуть процедуру в Native compiled? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 17:06 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, достаточно - смотря для чего. В таком варианте вы используете так называемый "interop access" к xtp-таблицам, он несколько медленней поскольку вы тратите процессорное время на компиляцию инструкций. Если у вас есть возможность переписать процедура на native compilation, то перепишите - получите максимальный выигрыш в плане быстродействия от XTP. Другое дело что не всегда можно компиляцию в собственном коде применять, потому что некоторые TSQL инструкции там не поддерживаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 19:11 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, достаточно - смотря для чего. В таком варианте вы используете так называемый "interop access" к xtp-таблицам, он несколько медленней поскольку вы тратите процессорное время на компиляцию инструкций. Если у вас есть возможность переписать процедура на native compilation, то перепишите - получите максимальный выигрыш в плане быстродействия от XTP. Другое дело что не всегда можно компиляцию в собственном коде применять, потому что некоторые TSQL инструкции там не поддерживаются. ясно, т.е. можно, желательно, но не обязательно. Я проверил свою процедуру, там до фига не поддерживаемых моментов для Native Compiled. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 10:24 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Начал переделывать процедуру в Native Compiled и нарвался на такое: там чтение из обычной таблицы Т, чем заменить? При этом таблицу менять в memory_optimized пока не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 15:01 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин Начал переделывать процедуру в Native Compiled и нарвался на такое: там чтение из обычной таблицы Т, чем заменить? При этом таблицу менять в memory_optimized пока не получится. ничем, вы не можете обращаться в NC-процедуре к обычным дисковым таблицам. если у вас логика подразумевает что вы будете пытаться в запросах использовать связку disk-based table join xtp-tables / etc, то здесь только интерпретируемый код. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 16:44 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин Начал переделывать процедуру в Native Compiled и нарвался на такое: там чтение из обычной таблицы Т, чем заменить? При этом таблицу менять в memory_optimized пока не получится. ничем, вы не можете обращаться в NC-процедуре к обычным дисковым таблицам. если у вас логика подразумевает что вы будете пытаться в запросах использовать связку disk-based table join xtp-tables / etc, то здесь только интерпретируемый код. делаю wrapper так: обычная процедура читаю данные из обычной таблицы, передаю в параметрах ->NC процедура ->работа с таблицами MEMORY_OPTIMIZED Так срабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 17:15 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Чем заменить вызов на первый взгляд безобидной REPLACE? Код: sql 1.
авторMsg 10794, Level 16, State 93, Procedure usp_2, Line 101 [Batch Start Line 108] The function 'replace' is not supported with natively compiled modules. т.е. внутри строки где-то может быть :dobedo:, его надо заменить на :bedobe: ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 17:19 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, Те функции которые недоступны из NC, придется выносить за пределы до вызова хранимки. Можно конечно эмулировать работу replace с помощью цикла и итерации по substring но имхо это изврат. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 18:01 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, Те функции которые недоступны из NC, придется выносить за пределы до вызова хранимки. Можно конечно эмулировать работу replace с помощью цикла и итерации по substring но имхо это изврат. вот, да, крутил-мутил, но придется выносить во враппер ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2021, 18:22 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Еще вот вопрос. Какое значение ставить в BUCKET_COUNT? Что именно это означает? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 11:39 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, https://www.sql.ru/forum/1197519/pomogite-opredelit-bucket-count The bucket count should ideally be close to 1 – 2X the number of unique key values that are expected in the table. For example, if you have an index on part_no and expect 10,000 unique part numbers, you specify a BUCKET_COUNT of 10,000 – 20,000. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 12:59 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Владислав Колосов Ролг Хупин, https://www.sql.ru/forum/1197519/pomogite-opredelit-bucket-count The bucket count should ideally be close to 1 – 2X the number of unique key values that are expected in the table. For example, if you have an index on part_no and expect 10,000 unique part numbers, you specify a BUCKET_COUNT of 10,000 – 20,000. спасибо! но, видимо, там д.б. "ideally be close to [Х – 2X] " исходя из примера? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 13:13 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, вы учтите что хеш-индекс достаточно специфичная штука, так ли он вам нужен? на сколько я понял вы вообще пытаетесь перевести уже какую то существующую базу на рельсы XTP. чисто имхо это не совсем верный подход. сама технология имеет кучу ограничений и условностей, обычно под данную технологию сразу проектируют БД с учетом всех ее особенностей с нуля, а не переводят готовые решения которые изначально затачивались под песеммистический параллелизм и все его плюшки ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 13:56 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин спасибо! но, видимо, там д.б. "ideally be close to [Х – 2X] " исходя из примера? от 1-го до 2-х X ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 13:58 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, вы учтите что хеш-индекс достаточно специфичная штука, так ли он вам нужен? на сколько я понял вы вообще пытаетесь перевести уже какую то существующую базу на рельсы XTP. чисто имхо это не совсем верный подход. сама технология имеет кучу ограничений и условностей, обычно под данную технологию сразу проектируют БД с учетом всех ее особенностей с нуля, а не переводят готовые решения которые изначально затачивались под песеммистический параллелизм и все его плюшки Вы правы в целом, но: хэш-индекс - один из двух доступных для memory optimized tables, так что у меня вариантов нет. Да, практически существующую, но тоже - существующую структуру, я хочу перевести несколько таблиц и процедур, которые "просятся". А остальные, которые будут в работе большими - и хотел бы, но не вижу вариантов. Например, есть таблица с несложной структурой, которую можно было бы перевести в мемори оптимизнутые, но там два этажа подчинений: Т1(мастер)->10 T1N (details)->5 T11M (details) Так что пока ограничиваюсь малым: парой таблиц и парой процедур. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 15:00 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Еще такой вопрос: расцепил таблицы TMaster->TDetails Сделал TDetails MemoryOptimized, а TMaster осталась дисковой . При попытке вернуть Foreign Key пишет ошибку авторMsg 10778, Level 16, State 0, Line 41 Foreign key relationships between memory optimized tables and non-memory optimized tables are not supported. Msg 1750, Level 16, State 1, Line 41 Could not create constraint or index. See previous errors. Вопрос: как сцепить? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 14:49 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин Еще такой вопрос: расцепил таблицы TMaster->TDetails Сделал TDetails MemoryOptimized, а TMaster осталась дисковой . При попытке вернуть Foreign Key пишет ошибку авторMsg 10778, Level 16, State 0, Line 41 Foreign key relationships between memory optimized tables and non-memory optimized tables are not supported. Msg 1750, Level 16, State 1, Line 41 Could not create constraint or index. See previous errors. Вопрос: как сцепить? Ответ: никак. Или делайте обе таблицы xtp, или обе таблицы дисковые ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 15:04 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин Еще такой вопрос: расцепил таблицы TMaster->TDetails Сделал TDetails MemoryOptimized, а TMaster осталась дисковой . При попытке вернуть Foreign Key пишет ошибку пропущено... Вопрос: как сцепить? Ответ: никак. Или делайте обе таблицы xtp, или обе таблицы дисковые ясно, но, если я конвертирую часть таблиц, то когда-то надо решать. Может руками, типа триггер прикрутить? если он сработает, конечно. Т.е. получается, что все эти делете каскаде и т.д. тоже накрываются? как с ними быть в случае дисковой и инмемори таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 15:21 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, у вас накрываются любые технологии которые заведомо не поддерживаются in-memory таблицами список вот: https://docs.microsoft.com/ru-ru/sql/relational-databases/in-memory-oltp/transact-sql-constructs-not-supported-by-in-memory-oltp?view=sql-server-ver15 +ограничения NC процедур +фишки оптимистической модели управления параллелизмом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 16:01 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
felix_ff Ролг Хупин, у вас накрываются любые технологии которые заведомо не поддерживаются in-memory таблицами список вот: https://docs.microsoft.com/ru-ru/sql/relational-databases/in-memory-oltp/transact-sql-constructs-not-supported-by-in-memory-oltp?view=sql-server-ver15 +ограничения NC процедур +фишки оптимистической модели управления параллелизмом. понял, но я же не одинок в этом безумном мире, как-то же люди моделируют свяь в таких случаях? или оставляют свободно болтаться после конвертации да и х.с.н.? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 16:23 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Дальше, есть у меня в триггере, который я делаю NC такая фигня UPDATE dbo.names SET [hname] = CHECKSUM(idname) where [id] =@Id Но CHECKSUM не поддерживается. Куда бежать? Чем заменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 18:46 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, нельзя и невинность соблюсти и капитал приобрести. Для In-memory технологии ниша довольно узкая и специфическая. Насколько я понял, область применения - это почти или полностью автоматизированные системы накопления и обработки, не ориентированные на человека. То, что Вы пытаетесь прикрутить - это куски Human-affected workflow. Сначала надо понять - как эта технология послужит Вашим целям кроме " должно быть быстрее, обещали же". ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2021, 23:10 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Владислав Колосов Ролг Хупин, нельзя и невинность соблюсти и капитал приобрести. Для In-memory технологии ниша довольно узкая и специфическая. Насколько я понял, область применения - это почти или полностью автоматизированные системы накопления и обработки, не ориентированные на человека. То, что Вы пытаетесь прикрутить - это куски Human-affected workflow. Сначала надо понять - как эта технология послужит Вашим целям кроме " должно быть быстрее, обещали же". Вы правы, но "должно быть быстрее" - и это тоже одна из объявленных целей. Я хочу практически проделать то, о чем было заявлено майкрософтом. Они, кстати, не ограничивали применение In-memory. В частности, если юзер хочет перевести часть таблиц-процедур-триггеров на In-memory - это допустимо и нормально. Ограничений нет, но есть ограничения на саму технологию, с чем я и борюсь в своих экспериментах ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 10:34 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Владислав Колосов Ролг Хупин, нельзя и невинность соблюсти и капитал приобрести. Для In-memory технологии ниша довольно узкая и специфическая. Насколько я понял, область применения - это почти или полностью автоматизированные системы накопления и обработки, не ориентированные на человека. То, что Вы пытаетесь прикрутить - это куски Human-affected workflow. Сначала надо понять - как эта технология послужит Вашим целям кроме " должно быть быстрее, обещали же". Кстати, вот нашел авторThe In-Memory OLTP Engine is fully integrated in the SQL Server Database Engine. You do not need to perform complex system refactoring, splitting data between in-memory and conventional database servers or moving all of the data from the database into memory. You can separate in-memory and disk data on a table-by-table basis, which allows you to move active operational data into memory, keeping other tables and historical data on disk. In some cases, that migration can even be done transparently to client applications. Так что - все ок, идем дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 15:55 |
|
In-Memory Optimized Tables
|
|||
---|---|---|---|
#18+
Ролг Хупин, да, надо сказать что их рекламная кампания ставит в заблуждение, на плакате все улыбаются и все довольны. Я тоже когда-то повёлся на эту рекламу. :) Но потом быстро выяснилось, что технология пригодна лишь для хардкор-реляционных систем. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2021, 15:57 |
|
|
start [/forum/topic.php?fid=46&msg=40043958&tid=1685058]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
132ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 516ms |
0 / 0 |