2013-06-03 5 views
0

Im работает над приложением, которое обращается к Sybase ASE 15.0.2, где текущий код получает доступ к удаленной базе данных (CIS) для вставки строки с использованием определения прокси-таблицы (таблица адресата является Таблица DOL - DRL - строка PK определяется как личность и всегда растет). Текущий код выполняет выбор, чтобы проверить, существует ли строка во избежание дублирования данных для вставки.Блокировка удаленной строки Sybase ASE

Поскольку удаленная таблица также имеет определение PK в таблице, я понимаю, что проверка PK будет выполнена еще до совершения строки. Я планирую удалить проверку выбора, так как ее эффективное выполнение снова с помощью проверки PK, , но я обеспокоен тем, что если при получении файла со многими дубликатами, таблица может столкнуться с ненужным утверждением, когда данные пытаются быть совершены.

Его неясно, если Sybase ASE пытается удерживать последнюю строку и записывает данные перед проверкой на дубликат . Кроме того, если таблица очень большая, то она касается также того времени, которое будет потрачено на просмотр полного индекса , чтобы найти дубликаты.

Я нашел некоторую документацию для SQL в любом месте, но не ASE в следующей ссылке http://dcx.sybase.com/1200/en/dbusage/insert-how-transact.html

Лучший я смог найти следующее объяснение

https://groups.google.com/forum/?fromgroups#!topic/comp.databases.sybase/tHnOqptD7X8

Но это не подробно проинформируйте о том, как строка заблокирована (и если есть какая-либо оптимизация для ее записи или в то же время проверки PK) , а также если она будет растрачивать полный взгляд на ПК, если им положительно вставить ряд которых PK положительно больше, чем в последней строке поручены

Благодаря

Alex

+0

Вы посмотрели документы: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase15.cisug/html/omni_ug/BABFDDHD.htm –

ответ

0

В отличие от SqlAnywhere нет опции для ASE, чтобы установить wait_for_commit. Ограничение первичного ключа проверяется во время вставки, а не во время фиксации. Проблема, которую я понимаю из вашего сообщения, я вижу, если у вас есть массовая вставка из файла, который может содержать дубликаты, это загрузить в таблицу temp, проверить дубликаты, удалить дубликаты, а затем вставить уникальные. Массовая вставка намного быстрее, хотя она по-прежнему проверяет нарушения первичного ключа. Однако нет никакой стоимости, поскольку нет отката назад. Инструкция insert всегда есть или ничего. Даже если одна строка дублируется, вся инструкция insert не будет выполнена. Перед тем, как вставлять больше без ошибок, вместо того, чтобы использовать ограничение для проверки, убедитесь, что он будет терпеть неудачу, а откат снова станет дорогостоящим.

0

Thanks Mike Ссылка имеет очень быстрое объяснение вставки с точки зрения СНГ. Его переменная, с которой следует следить, учитывая, что СНГ может стать представителем потребительского времени , если его выполнение данных и проверка синтаксиса, если это будет сделано снова, когда CIS пересылает инструкцию insert на целевой сервер.Я боялся, что СНГ может иметь какое-то влияние за пределами сетевого трафика/времени по проверке блокировки/ПК

Raju Я согласен с тем, что избегая дублирования ПК, проверяя, существует ли строка, выполняющая выбор и выполнение в пакет, но im в настоящее время ищет решение стоп-разрыва, и это может заключаться в том, чтобы выполнить команду вставки в партиях из примерно 50 строк и оставить повторную проверку ключа для 0Kдля ПК. Надеюсь, проверка ПК будет осуществляться через объединение из 50 вновь добавленных строк, и, таким образом, избегают пересекать индекс для каждой отдельной строки ...

Ill попытаться проверить это и комментарий назад

Alex