30.06.2008, 18:26 | #1 |
Участник
|
Всем доброго времени суток!
Наблюдаю следующую проблему: при встстравке или модификации 1 записи таблицы (Item Ledger Entry, Value Entry) этот процесс может занимать до 0,7 сек (цифра плавает - если проанализировать монитором клиента). Да, таблицы большие (по 50 млн. записей - база SQL). Да, на них построены пару немаленьких sift-таблиц. Но 0,7 сек - для вставки или модификации одной записи - это, по-моему, слишком много. Может кто-нибудь наблюдал такую проблему, а еще лучше боролся с ней? Подскажите пож-ста пути, которыми можно было бы решить проблему производительности. |
|
02.07.2008, 12:44 | #2 |
Участник
|
А если SQL-запросом вставку сделать - так же долго получается?
|
|
02.07.2008, 14:01 | #3 |
Участник
|
Чтобы узнать, в ключах ли дело, попробуйте их отключить. На всякий случай спрошу также, нет ли каких-то обработок в триггерах OnInsert и OnModify?
|
|
03.07.2008, 14:59 | #4 |
Участник
|
Сложно сказать. Речь идет об операциях учета и скорость вставки (в item ledger entry и в value entry) наблюдаем через монитор клиента. Некоторые insert и modify проходят в адекватное время -некоторые нет. Из-за механизмов кэширования в SQL если запустить тот же самый учет еще раз, то скорости будут много больше. Думаю так же будет и с запросом, если его скопировать скажем из профайлера и запустить то, вероятно, он выполнится куда быстрее - из-за кэширования. В OnInsert и OnModify ничего нет. С отключением ключей и сифтов - попробуем. Но отключение может ничего и не дать: поскольку вставки идут в момент учета, без ключей кодъюнит может просто не дойти до момента вставки, начав выполнять бесконечно долгую выборку по первичному ключу для подсчета чего-нибудь необходимого перед вставкой. |
|
16.07.2008, 12:43 | #5 |
Участник
|
Цитата:
Сообщение от MSI
В OnInsert и OnModify ничего нет. С отключением ключей и сифтов - попробуем. Но отключение может ничего и не дать: поскольку вставки идут в момент учета, без ключей кодъюнит может просто не дойти до момента вставки, начав выполнять бесконечно долгую выборку по первичному ключу для подсчета чего-нибудь необходимого перед вставкой.
А при большом кол-ве сифтов происходит обновление всех связанных таблицек, поэтому "построение плана запроса" + "обновление данных" = долгое время |
|