Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Пара вопросов: а) есть 2 таблицы и 1 процедура, работающая с ними б) таблицы я конвертнул в In-Memory Optimized Tables, процедуры остались почти нетронутыми. Этого достаточно? или надо конвертнуть процедуру в Native compiled? |
3 фев 21, 17:06 [22274143] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1688 |
Ролг Хупин, достаточно - смотря для чего. В таком варианте вы используете так называемый "interop access" к xtp-таблицам, он несколько медленней поскольку вы тратите процессорное время на компиляцию инструкций. Если у вас есть возможность переписать процедура на native compilation, то перепишите - получите максимальный выигрыш в плане быстродействия от XTP. Другое дело что не всегда можно компиляцию в собственном коде применять, потому что некоторые TSQL инструкции там не поддерживаются. |
3 фев 21, 19:11 [22274282] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
ясно, т.е. можно, желательно, но не обязательно. Я проверил свою процедуру, там до фига не поддерживаемых моментов для Native Compiled. |
||||
4 фев 21, 10:24 [22274499] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Начал переделывать процедуру в Native Compiled и нарвался на такое: там чтение из обычной таблицы Т, чем заменить? При этом таблицу менять в memory_optimized пока не получится. |
8 фев 21, 15:01 [22277426] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1688 |
ничем, вы не можете обращаться в NC-процедуре к обычным дисковым таблицам. если у вас логика подразумевает что вы будете пытаться в запросах использовать связку disk-based table join xtp-tables / etc, то здесь только интерпретируемый код. Сообщение было отредактировано: 8 фев 21, 16:39 |
||||
8 фев 21, 16:44 [22277529] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
делаю wrapper так: обычная процедура читаю данные из обычной таблицы, передаю в параметрах ->NC процедура ->работа с таблицами MEMORY_OPTIMIZED Так срабатывает. |
||||||||
8 фев 21, 17:15 [22277569] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Чем заменить вызов на первый взгляд безобидной REPLACE?SELECT @name = replace(@inname, ':' + @new + ':', ':' + @old + ':')
т.е. внутри строки где-то может быть :dobedo:, его надо заменить на :bedobe: |
||
8 фев 21, 17:19 [22277575] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1688 |
Ролг Хупин, Те функции которые недоступны из NC, придется выносить за пределы до вызова хранимки. Можно конечно эмулировать работу replace с помощью цикла и итерации по substring но имхо это изврат. |
8 фев 21, 18:01 [22277640] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
вот, да, крутил-мутил, но придется выносить во враппер |
||||
8 фев 21, 18:22 [22277666] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Еще вот вопрос. Какое значение ставить в BUCKET_COUNT? Что именно это означает? |
10 фев 21, 11:39 [22278704] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8313 |
Ролг Хупин, https://www.sql.ru/forum/1197519/pomogite-opredelit-bucket-count
|
||
10 фев 21, 12:59 [22278756] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
спасибо! но, видимо, там д.б. "ideally be close to [Х – 2X] " исходя из примера? |
||||||
10 фев 21, 13:13 [22278772] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1688 |
Ролг Хупин, вы учтите что хеш-индекс достаточно специфичная штука, так ли он вам нужен?
Сообщение было отредактировано: 10 фев 21, 13:53 |
|
10 фев 21, 13:56 [22278812] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8700 |
от 1-го до 2-х X |
||||
10 фев 21, 13:58 [22278822] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Вы правы в целом, но: хэш-индекс - один из двух доступных для memory optimized tables, так что у меня вариантов нет. Да, практически существующую, но тоже - существующую структуру, я хочу перевести несколько таблиц и процедур, которые "просятся". А остальные, которые будут в работе большими - и хотел бы, но не вижу вариантов. Например, есть таблица с несложной структурой, которую можно было бы перевести в мемори оптимизнутые, но там два этажа подчинений: Т1(мастер)->10 T1N (details)->5 T11M (details) Так что пока ограничиваюсь малым: парой таблиц и парой процедур. |
|||||
10 фев 21, 15:00 [22278888] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Еще такой вопрос: расцепил таблицы TMaster->TDetails Сделал TDetails MemoryOptimized, а TMaster осталась дисковой . При попытке вернуть Foreign Key пишет ошибку
Вопрос: как сцепить? |
||
15 фев 21, 14:49 [22281150] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1688 |
Ответ: никак. Или делайте обе таблицы xtp, или обе таблицы дисковые |
||||||
15 фев 21, 15:04 [22281160] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
ясно, но, если я конвертирую часть таблиц, то когда-то надо решать. Может руками, типа триггер прикрутить? если он сработает, конечно. Т.е. получается, что все эти делете каскаде и т.д. тоже накрываются? как с ними быть в случае дисковой и инмемори таблицы? |
||||||||
15 фев 21, 15:21 [22281177] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1688 |
Ролг Хупин, у вас накрываются любые технологии которые заведомо не поддерживаются 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 фев 21, 16:01 [22281206] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
понял, но я же не одинок в этом безумном мире, как-то же люди моделируют свяь в таких случаях? или оставляют свободно болтаться после конвертации да и х.с.н.? |
||||
15 фев 21, 16:23 [22281218] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Дальше, есть у меня в триггере, который я делаю NC такая фигня UPDATE dbo.names SET [hname] = CHECKSUM(idname) where [id] =@Id Но CHECKSUM не поддерживается. Куда бежать? Чем заменить? |
15 фев 21, 18:46 [22281313] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8313 |
Ролг Хупин, нельзя и невинность соблюсти и капитал приобрести. Для In-memory технологии ниша довольно узкая и специфическая. Насколько я понял, область применения - это почти или полностью автоматизированные системы накопления и обработки, не ориентированные на человека. То, что Вы пытаетесь прикрутить - это куски Human-affected workflow. Сначала надо понять - как эта технология послужит Вашим целям кроме " должно быть быстрее, обещали же". |
15 фев 21, 23:10 [22281401] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Вы правы, но "должно быть быстрее" - и это тоже одна из объявленных целей. Я хочу практически проделать то, о чем было заявлено майкрософтом. Они, кстати, не ограничивали применение In-memory. В частности, если юзер хочет перевести часть таблиц-процедур-триггеров на In-memory - это допустимо и нормально. Ограничений нет, но есть ограничения на саму технологию, с чем я и борюсь в своих экспериментах ![]() |
||||
16 фев 21, 10:34 [22281449] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3970 |
Кстати, вот нашел
Так что - все ок, идем дальше ![]() |
||||||
16 фев 21, 15:55 [22281689] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8313 |
Ролг Хупин, да, надо сказать что их рекламная кампания ставит в заблуждение, на плакате все улыбаются и все довольны. Я тоже когда-то повёлся на эту рекламу. :) Но потом быстро выяснилось, что технология пригодна лишь для хардкор-реляционных систем. |
16 фев 21, 15:57 [22281690] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |