Рекомендации по использованию параметров транзакций
Рекомендации по использованию параметров транзакций
Как использовать транзакции - с этим вопросом часто сталкиваются начинающие разработчики. Конечно, для каждой конкретной задачи нужно решать вопрос индивидуально. Обычно все запросы к базе данных подразделяются на группы - запросы на чтение самого "свежего" состояния базы данных, запросы на текущие изменения, запросы на чтение справочных таблиц, запросы на чтение данных для построения отчета и т. д. Для каждой группы запросов обычно устанавливается своя транзакция (или группа транзакций) с набором параметров, нужных для выполнения задачи.
Рассмотрим типичное приложение базы данных, с помощью которого пользователь желает читать и изменять данные. В приложении имеется сетка (dbGrid в Delphi/C++Builder), в которой пользователь просматривает текущее содержание какой-то таблицы. Сетка содержит lookup-поля, которые заполняются значениями из справочников. Когда пользователь находит запись, которую нужно изменить (или просто желает добавить запись в таблицу), то он нажимает кнопку добавления/редактирования и в появившемся диалоге заполняет/изменяет поля записи и затем сохраняет/отменяет редактирование.
Как же настроить транзакции для такого приложения?
Для запроса SELECT. ., который читает данные в сетку, следует использовать транзакцию с доступом "только для чтения" с уровнем изоляции READ COMMITED, чтобы получить самые "свежие" данные из таблицы, как только они будут обновлены/добавлены (не надо забывать о том, что наше приложение многопользовательское и одновременно могут работать несколько приложений). Примерный набор параметров такой:
read
read_committed
rec_version
nowait
При этом обеспечивается чтение всех подтвержденных другими транзакциями записей, причем без конфликтов с параллельно работающими пишущими и читающими транзакциями.
Такую транзакцию можно длительное время держать открытой - сервер не нагружается версиями записей.
Для запроса на изменение/добавление данных можно использовать транзакцию с уровнем изоляции concurrency. Запрос на обновление в этом случае должен быть очень коротким: пользователь заполняет необходимые поля, запускается транзакция, делается попытка выполнить запрос, и затем, если не возник н> конфликта на запись с другой транзакцией, подтверждение нашей транзакции или откат, если был конфликт (на уровне клиентского приложения конфлнмы проявляются в виде исключений, которые удобно отлавливать с помощью коп струкций try.. .except или try.. .catch)
Параметры такой транзакции будут следующими:
write
concurrency
nowait
Такой набор параметров позволит нам сразу (nowait) выявить то, что запись редактируется/изменяется другим пользователем (возникнет ошибка), а также предотвратить попытки других пользователей начать изменение записей, трансформированных нашей транзакцией (у претендента возникнет ошибка "update conflict"). Надо отметить, что перед редактированием нужно перечитать запись, потому что она могла быть изменена, а в кеше сетки может все еще находиться старая версия
Для запросов, которые применяются для построения отчетов, однозначно нужно использовать транзакцию с режимом доступа "только для чтения" и с уровнем изоляции concurrency:
read
concurrency
nowait
Такая транзакция будет возвращать строго те данные, что существовали на момент ее запуска, - это очень важная особенность для отчетов, которые строятся за несколько проходов по базе данных.
Для запросов на чтение справочных данных можно использовать транзакцию, аналогичную запросу SELECT для выборки данных в сетку.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Дополнительные советы по использованию рельсов
Дополнительные советы по использованию рельсов • Вагонетка с пассажиром движется быстрее, чем пустая.• Чтобы максимально быстро разбить блок рельсов, используйте кирку.• Иногда может показаться, что правильно размещенные искривленные рельсы искривляются
Руководство по использованию диска
Руководство по использованию диска Прежде чем установить прилагаемый к данной книге диск, прочтите предлагаемое руководство. Это поможет избежать ошибок в работе и сэкономит
Краткие инструкции по использованию параметров
Краткие инструкции по использованию параметров Прежде чем мы приступим к изучению новых параметров в реестре Windows, необходимо ознакомиться с некоторыми правилами, которых мы будем придерживаться в этой книге. Прежде всего, для экономии места мы будем использовать
6. Расширение возможностей по использованию приложений
6. Расширение возможностей по использованию приложений Мощный компьютер может обеспечивать лишь то быстродействие, c каким вы его используете, поэтому еще не так давно многие пользователи часами ожидали выполнения своих приложений. Их устройства, как правило, с трудом
Параметры транзакций
Параметры транзакций В первом разделе этой главы была сделана попытка рассмотреть механизм работы транзакций в СУБД InterBase в целом. Теперь необходимо рассмотреть практические аспекты применяющие транзакций в InterBase.Программисты, использующие такие современные
Настройка параметров транзакций
Настройка параметров транзакций Опции настройки DSN предусматривают задание параметров транзакций использование команд COMMIT/ROLLBACK или COMMIT RETAINING/ROLLBACK RETAINING при завершении транзакции, установку режима "только чтение", установка режима ожидания (WAIT/NO_WAIT) и запрещение выборки
Руководство по использованию диска
Руководство по использованию диска Прежде чем установить прилагаемый к данной книге диск, внимательно прочтите предлагаемое руководство. Это поможет избежать возможных ошибок в работе и в конечном итоге сэкономит ваше драгоценное
Руководство по использованию диска
Руководство по использованию диска Прежде чем установить прилагаемый к книге диск, внимательно прочитайте данное руководство. Это поможет избежать возможных ошибок в работе и в конечном итоге сэкономит ваше драгоценное
Руководство по использованию диска
Руководство по использованию диска Прежде чем установить прилагаемый к книге диск, внимательно прочтите данное руководство. Это поможет избежать возможных ошибок в работе и в конечном итоге сэкономит ваше драгоценное
Язык для транзакций
Язык для транзакций Важно обратиться к средствам реализации транзакций в Firebird. До сих пор некоторые связанные с транзакциями особенности вовсе не реализованы в динамическом SQL, а только через API. Среди небольшого количества связанных с транзакциями операторов SQL и
4.2. Инструкция по использованию
4.2. Инструкция по использованию Программа GraphExpress, которая прилагается к книге, представляет собой упрощенную аппликацию для проведения простого графологического анализа. Использовать ее может каждый, кто хоть немного ознакомился с признаками почерка. Поэтому и
5.2. Инструкция по использованию
5.2. Инструкция по использованию Программа достаточно проста в использовании и имеет удобный пользовательский интерфейс.Для удобства, перед тем как начать анализ почерка, на чистом листе бумаги напишите все буквы алфавита (прописной и строчный варианты) и/или несколько
Лекция 4. Подходы к повторному использованию
Лекция 4. Подходы к повторному использованию В этой лекции будут рассмотрены некоторые из проблем, направленных на широкомасштабное внедрение повторного использования программных компонентов. Цели повторного использования "Последуйте примеру проектирования
Обучать использованию
Обучать использованию Безопасность не является предметом, на который обращают внимание большинство технических специалистов или системных администраторов в учебных заведениях или при практической подготовке. Обеспечьте, чтобы ваши сотрудники имели хотя бы базовую
Советы по использованию Мастера фунций
Советы по использованию Мастера фунций Если вы выполнили приведенные выше задания, то должны убедиться в том, что Мастер функций является эффективным инструментом для создания расчетных листов. Несколько советов по его использованию.? Вы можете вставить функцию в