Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / In-Memory Optimized Tables / 25 сообщений из 31, страница 1 из 2
03.02.2021, 17:06
    #40041277
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Пара вопросов:
а) есть 2 таблицы и 1 процедура, работающая с ними
б) таблицы я конвертнул в In-Memory Optimized Tables, процедуры остались почти нетронутыми.

Этого достаточно? или надо конвертнуть процедуру в Native compiled?
...
Рейтинг: 0 / 0
03.02.2021, 19:11
    #40041329
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

достаточно - смотря для чего.

В таком варианте вы используете так называемый "interop access" к xtp-таблицам, он несколько медленней поскольку вы тратите процессорное время на компиляцию инструкций.

Если у вас есть возможность переписать процедура на native compilation, то перепишите - получите максимальный выигрыш в плане быстродействия от XTP.

Другое дело что не всегда можно компиляцию в собственном коде применять, потому что некоторые TSQL инструкции там не поддерживаются.
...
Рейтинг: 0 / 0
04.02.2021, 10:24
    #40041454
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
felix_ff
Ролг Хупин,

достаточно - смотря для чего.

В таком варианте вы используете так называемый "interop access" к xtp-таблицам, он несколько медленней поскольку вы тратите процессорное время на компиляцию инструкций.

Если у вас есть возможность переписать процедура на native compilation, то перепишите - получите максимальный выигрыш в плане быстродействия от XTP.

Другое дело что не всегда можно компиляцию в собственном коде применять, потому что некоторые TSQL инструкции там не поддерживаются.


ясно, т.е. можно, желательно, но не обязательно.

Я проверил свою процедуру, там до фига не поддерживаемых моментов для Native Compiled.
...
Рейтинг: 0 / 0
08.02.2021, 15:01
    #40043311
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Начал переделывать процедуру в Native Compiled и нарвался на такое:

там чтение из обычной таблицы Т, чем заменить?
При этом таблицу менять в memory_optimized пока не получится.
...
Рейтинг: 0 / 0
08.02.2021, 16:44
    #40043372
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин
Начал переделывать процедуру в Native Compiled и нарвался на такое:

там чтение из обычной таблицы Т, чем заменить?
При этом таблицу менять в memory_optimized пока не получится.


ничем, вы не можете обращаться в NC-процедуре к обычным дисковым таблицам.

если у вас логика подразумевает что вы будете пытаться в запросах использовать связку disk-based table join xtp-tables / etc, то здесь только интерпретируемый код.
...
Рейтинг: 0 / 0
08.02.2021, 17:15
    #40043394
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
felix_ff
Ролг Хупин
Начал переделывать процедуру в Native Compiled и нарвался на такое:

там чтение из обычной таблицы Т, чем заменить?
При этом таблицу менять в memory_optimized пока не получится.


ничем, вы не можете обращаться в NC-процедуре к обычным дисковым таблицам.

если у вас логика подразумевает что вы будете пытаться в запросах использовать связку disk-based table join xtp-tables / etc, то здесь только интерпретируемый код.


делаю wrapper так:

обычная процедура
читаю данные из обычной таблицы, передаю в параметрах
->NC процедура
->работа с таблицами MEMORY_OPTIMIZED

Так срабатывает.
...
Рейтинг: 0 / 0
08.02.2021, 17:19
    #40043397
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Чем заменить вызов на первый взгляд безобидной REPLACE?

Код: sql
1.
SELECT @name = replace(@inname, ':' + @new + ':', ':' + @old + ':')



автор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:
...
Рейтинг: 0 / 0
08.02.2021, 18:01
    #40043434
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

Те функции которые недоступны из NC, придется выносить за пределы до вызова хранимки.

Можно конечно эмулировать работу replace с помощью цикла и итерации по substring но имхо это изврат.
...
Рейтинг: 0 / 0
08.02.2021, 18:22
    #40043445
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
felix_ff
Ролг Хупин,

Те функции которые недоступны из NC, придется выносить за пределы до вызова хранимки.

Можно конечно эмулировать работу replace с помощью цикла и итерации по substring но имхо это изврат.


вот, да, крутил-мутил, но придется выносить во враппер
...
Рейтинг: 0 / 0
10.02.2021, 11:39
    #40043930
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Еще вот вопрос.
Какое значение ставить в BUCKET_COUNT? Что именно это означает?
...
Рейтинг: 0 / 0
10.02.2021, 12:59
    #40043958
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

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.
...
Рейтинг: 0 / 0
10.02.2021, 13:13
    #40043965
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Владислав Колосов
Ролг Хупин,

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] " исходя из примера?
...
Рейтинг: 0 / 0
10.02.2021, 13:56
    #40043986
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

вы учтите что хеш-индекс достаточно специфичная штука, так ли он вам нужен?


на сколько я понял вы вообще пытаетесь перевести уже какую то существующую базу на рельсы XTP.
чисто имхо это не совсем верный подход.
сама технология имеет кучу ограничений и условностей, обычно под данную технологию сразу проектируют БД с учетом всех ее особенностей с нуля, а не переводят готовые решения которые изначально затачивались под песеммистический параллелизм и все его плюшки
...
Рейтинг: 0 / 0
10.02.2021, 13:58
    #40043993
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин

спасибо! но, видимо, там д.б. "ideally be close to [Х – 2X] " исходя из примера?


от 1-го до 2-х X
...
Рейтинг: 0 / 0
10.02.2021, 15:00
    #40044039
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
felix_ff
Ролг Хупин,

вы учтите что хеш-индекс достаточно специфичная штука, так ли он вам нужен?


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


Вы правы в целом, но:
хэш-индекс - один из двух доступных для memory optimized tables, так что у меня вариантов нет.
Да, практически существующую, но тоже - существующую структуру, я хочу перевести несколько таблиц и процедур, которые "просятся". А остальные, которые будут в работе большими - и хотел бы, но не вижу вариантов.
Например, есть таблица с несложной структурой, которую можно было бы перевести в мемори оптимизнутые, но там два этажа подчинений:
Т1(мастер)->10 T1N (details)->5 T11M (details)

Так что пока ограничиваюсь малым: парой таблиц и парой процедур.
...
Рейтинг: 0 / 0
15.02.2021, 14:49
    #40045472
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Еще такой вопрос:
расцепил таблицы 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.


Вопрос: как сцепить?
...
Рейтинг: 0 / 0
15.02.2021, 15:04
    #40045479
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин
Еще такой вопрос:
расцепил таблицы 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, или обе таблицы дисковые
...
Рейтинг: 0 / 0
15.02.2021, 15:21
    #40045489
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
felix_ff
Ролг Хупин
Еще такой вопрос:
расцепил таблицы TMaster->TDetails
Сделал TDetails MemoryOptimized, а TMaster осталась дисковой .
При попытке вернуть Foreign Key пишет ошибку

пропущено...


Вопрос: как сцепить?


Ответ: никак.

Или делайте обе таблицы xtp, или обе таблицы дисковые


ясно, но, если я конвертирую часть таблиц, то когда-то надо решать.
Может руками, типа триггер прикрутить? если он сработает, конечно.
Т.е. получается, что все эти делете каскаде и т.д. тоже накрываются? как с ними быть в случае дисковой и инмемори таблицы?
...
Рейтинг: 0 / 0
15.02.2021, 16:01
    #40045509
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

у вас накрываются любые технологии которые заведомо не поддерживаются 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 процедур

+фишки оптимистической модели управления параллелизмом.
...
Рейтинг: 0 / 0
15.02.2021, 16:23
    #40045515
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
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 процедур

+фишки оптимистической модели управления параллелизмом.


понял, но я же не одинок в этом безумном мире, как-то же люди моделируют свяь в таких случаях?
или оставляют свободно болтаться после конвертации да и х.с.н.?
...
Рейтинг: 0 / 0
15.02.2021, 18:46
    #40045566
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Дальше, есть у меня в триггере, который я делаю NC такая фигня

UPDATE dbo.names SET [hname] = CHECKSUM(idname) where [id] =@Id

Но CHECKSUM не поддерживается.
Куда бежать? Чем заменить?
...
Рейтинг: 0 / 0
15.02.2021, 23:10
    #40045628
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

нельзя и невинность соблюсти и капитал приобрести. Для In-memory технологии ниша довольно узкая и специфическая. Насколько я понял, область применения - это почти или полностью автоматизированные системы накопления и обработки, не ориентированные на человека. То, что Вы пытаетесь прикрутить - это куски Human-affected workflow.
Сначала надо понять - как эта технология послужит Вашим целям кроме " должно быть быстрее, обещали же".
...
Рейтинг: 0 / 0
16.02.2021, 10:34
    #40045658
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Владислав Колосов
Ролг Хупин,

нельзя и невинность соблюсти и капитал приобрести. Для In-memory технологии ниша довольно узкая и специфическая. Насколько я понял, область применения - это почти или полностью автоматизированные системы накопления и обработки, не ориентированные на человека. То, что Вы пытаетесь прикрутить - это куски Human-affected workflow.
Сначала надо понять - как эта технология послужит Вашим целям кроме " должно быть быстрее, обещали же".


Вы правы, но "должно быть быстрее" - и это тоже одна из объявленных целей.
Я хочу практически проделать то, о чем было заявлено майкрософтом.
Они, кстати, не ограничивали применение In-memory. В частности, если юзер хочет перевести часть таблиц-процедур-триггеров на In-memory - это допустимо и нормально. Ограничений нет, но есть ограничения на саму технологию, с чем я и борюсь в своих экспериментах
...
Рейтинг: 0 / 0
16.02.2021, 15:55
    #40045838
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Владислав Колосов
Ролг Хупин,

нельзя и невинность соблюсти и капитал приобрести. Для 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.


Так что - все ок, идем дальше
...
Рейтинг: 0 / 0
16.02.2021, 15:57
    #40045839
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
In-Memory Optimized Tables
Ролг Хупин,

да, надо сказать что их рекламная кампания ставит в заблуждение, на плакате все улыбаются и все довольны. Я тоже когда-то повёлся на эту рекламу. :)
Но потом быстро выяснилось, что технология пригодна лишь для хардкор-реляционных систем.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / In-Memory Optimized Tables / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]