Информация

Последние записи

Теги


Блоги


Записи из всех блогов на Sql.ru с тегом: sql


Serializable vs. Snapshot Isolation Level

По материалам статьи Craig Freedman https://docs.microsoft.com/ru-ru/archive/blogs/craigfr/serializable-vs-snapshot-isolation-level
16.05.2007
Уровни изоляции транзакций Serializable и Snapshot обеспечивают согласованное чтение из базы данных. На любом из этих уровней изоляции транзакция может читать только зафиксированные данные. Более того, транзакция может читать одни и те же данные несколько раз, не заботясь о каких-либо параллельных транзакциях, вносящих изменения в эти же данные. Те нежелательные эффекты, которые были продемонстрированы в предыдущих статьях при Read Committed и Repeatable Read, на уровнях изоляции Serializable и Snapshot просто невозможны.

Продолжить чтение.
автор: Александр Гладченко добавлено: 14 янв 21 просмотры: 1985, комментарии: 0



Уровень изоляции «Repeatable Read»

В двух предыдущих статьях было продемонстрировано как запросы с уровнем изоляции «read committed» могли порождать неожиданные результаты. Это становилось возможным из-за выполняющихся в одно и то же время изменений затронутых запросом строк. Чтобы недопустить подобных неожиданностей (но не всех), следует использовать для выборки уровень изоляции «repeatable read». В этой статье мы как раз и рассмотрим как одновременные изменения ведут себя с уровнем изоляции «repeatable read» (повторяемое чтение).
В отличие от просмотра с «read committed», просмотр с «repeatable read» удерживает блокировки каждой затронутой строки до окончания транзакции. На всём протяжении транзакции заблокированными могут оказаться даже некоторые строки, которые не соответствуют выборке в результате запроса. Такое блокирование гарантирует, что затронутые запросом строки не будут изменены или удалены в параллельном сеансе, пока текущая транзакция не будет завершена (независимо от того, будет ли она зафиксирована или произойдёт её откат). Эти блокировки не защищают от изменения или удаления те строки, которые еще не были охвачены просмотром, и не препятствуют вставке новых строк межу уже заблокированными строками.

Продолжить чтение.
автор: Александр Гладченко добавлено: 27 авг 20 просмотры: 5900, комментарии: 0



Tips for DBA: “SET QUERY_STORE = OFF” AND “QUERY STORE BACKGROUND FLUSH DB”

Если выполнение отключения QS для базы данных блокируется системным процессом: QUERY STORE BACKGROUND FLUSH DB

SET DEADLOCK_PRIORITY HIGH
ALTER DATABASE [DATABASENAME] SET QUERY_STORE = OFF WITH NO_WAIT
GO


Подключиться через DAC и сделать:

TRUNCATE table sys.plan_persist_runtime_stats;
TRUNCATE table sys.plan_persist_runtime_stats_interval;
TRUNCATE table sys.plan_persist_plan;
TRUNCATE table sys.plan_persist_query;
TRUNCATE table sys.plan_persist_query_text;
TRUNCATE table sys.plan_persist_context_settings;


Подробности можно найти тут: Manually Clearing the Query Store
автор: Александр Гладченко добавлено: 22 апр 20 просмотры: 7312, комментарии: 0



Tips for DBA: The SQL Server service and the SQL Server Agent Service fail to start on a stand-alone

Если в журнале приложений есть ошибки для MSSQLService: “…TDSSNIClient initialization failed with error 0x80092004…” нужно В POWERSHELL создать самоподписной сертификат (заменив в скрипте имя SERVERNAME.DOMENNAME.ru на полное имя вашего сервера):

New-SelfSignedCertificate -Type SSLServerAuthentication -DnsName SERVERNAME.DOMENNAME.ru -KeyLength 2048 -KeySpec KeyExchange -KeyUsage KeyEncipherment -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.1”) -NotAfter (Get-Date).AddMonths(1200)
Далее нужно указать для протоколов созданный сертификат, как это описано в главе “Configuring SSL for SQL Server” статьи: https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms189067(v=sql.105)
автор: Александр Гладченко добавлено: 10 фев 20 просмотры: 8577, комментарии: 0



План запроса с уровнем изоляции «Read Committed»

Craig Freedman, 2 мая 2007г. Оригинал статьи тут: https://blogs.msdn.microsoft.com/craigfr/2007/05/02/query-plans-and-read-committed-isolation-level/

В прошлый раз мы рассмотрели то, как одновременные изменения могут стать причиной просмотра на уровне изоляции read committed. Также было показано что эти условия могут привести к выборке одной и той же строки несколько раз или вообще к отсутствию строки в выборке. Теперь давайте рассмотрим как одновременные изменения могут отразиться на работе более сложных планов запроса.

Продолжить чтение.
автор: Александр Гладченко добавлено: 04 фев 20 просмотры: 9006, комментарии: 0



Представляю сообществу свою книгу oracle sql

Блог: Oracle SQL
Попытался структурировать свои знания и опыт, получилось 600 страниц, прошу не быть строгими и критиковать аргументированно.
В электронном варианте книга бесплатна, 6 рублей - обязательная комиссия магазина, как я понял.
Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики
или печатная версия , но уже за деньги
Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики
Пользуйтесь.
автор: Myp3_u_K добавлено: 20 июл 19 просмотры: 16317, комментарии: 20



уже МИЛЛИОН!!! 1 000 000!

Блог: Oracle SQL
Просмотров

Сегодня 1718
В этом месяце 10530
Всего 1000003

Сегодня счетчик посещений моего блога превзошел миллион просмотров, что дальше ? Продолжаю вести курсы, публикую книгу , постараюсь и дальше радовать вас новыми интересными заметками, дорогие читатели.
С уважением, Чалышев Максим Михайлович.
автор: Myp3_u_K добавлено: 14 апр 19 просмотры: 14761, комментарии: 6



SERIALIZABLE режим

Блог: Oracle SQL
Чалышев Максим Михайлович

Моя книга, электронная версия бесплатно
Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики или платная печатная версия

SQL. 5 дней которые изменят вашу жизнь.

В СУБД ORACLE есть возможность, чтобы пользователь всегда видел только те данные в таблицах, которые были доступны с начала его сессии
Такой режим (уровень изоляции) называется SERIALIZABLE. Для того чтобы включить этот режим используется команда

Alter session set isolation_level=serializable;

Следующий пример показывает отличие режима SERIALIZABLE от стандартного режима эксплуатации СУБД. Уровня изоляции READ COMMITTED
Откроем в двух разных окнах программу SQL Developer (или создадим новый Worksheet) подключимся к схеме SYS как администратор.
создадим таблицу man5
Create table Man5(prt number, name varchar2(50));



INSERT INTO man5 VALUES(20, 'Олег');
INSERT INTO man5 VALUES(21, 'Влад');
INSERT INTO man5 VALUES(22, 'Саша');
Commit;


читать дальше...
автор: Myp3_u_K добавлено: 18 фев 19 просмотры: 11343, комментарии: 3



Контекст сеанса

Блог: Oracle SQL
Чалышев Максим Михайлович
SQL. 5 дней которые изменят твою жизнь.

Введение
В каждой сессии есть возможность использовать специальные структуры данных, именуемые контекст.
Контексты - это набор данных вида - параметр значение. Контекст предоставляет дополнительные возможности для приложений, использующих СУБД Oracle.
Теория и практика
Контекст - это предопределённый набор параметров и значений создаваемый в рамках определенной сессии. Несколько таких наборов параметр значение, объединяется с помощью структуры называемой контекстом.

Задается значение контекста с помощью процедуры DBMS_SESSION.SET_CONTEXT

Функция SYS_CONTEXT позволяет получить значение заданного контекста в раках сессии.
Для создания контекста специальная команда CREATE CONTEXT.
Сначала следует создать специальною процедуру для управления контекстом.

CREATE OR REPLACE PROCEDURE set_mycontext_value ( par IN VARCHAR2, val IN VARCHAR2 ) 
AS BEGIN  DBMS_SESSION.SET_CONTEXT ( 'myctx', par, val ); END;

CREATE OR REPLACE CONTEXT myctx USING set_mycontext_value;

читать дальше...
автор: Myp3_u_K добавлено: 18 фев 19 просмотры: 12608, комментарии: 1



Планировщик JOB заданий. Управление.

Блог: Oracle SQL
Чалышев Максим Михайлович

SQL. 5 дней которые изменят твою жизнь.
моя книга , изучаем Oracle SQL, бесплатно
Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики или платная печатная версия

Введение
В Oracle есть специальный механизм запланировать выполнение определённой программы, на заданное время, это может быть оператор SQL, программа на языке PLSQL, либо даже внешняя программа. Этот механизм называется механизмом заданий Job

Данный механизм может применяться, например, для планирования запуска тяжелых запросов в ночное время или на выходные дни, распределения задач построения отчетности.

Теория и практика

Для управления заданиями в Oracle существует специальные пакет DBMS_JOB:
Создание заданий
Можно использовать механизм dbms_job
Или механизм dbms_scheduler – более современный способ
DBMS_JOB.SUBMIT(
 JOB OUT BINARY_INTEGER,
 WHAT IN VARCHAR2,
 NEXT_DATE IN DATE DEFAULT SYSDATE,
 INTERVAL IN VARCHAR2 DEFAULT NULL,
 NO_PARSE IN BOOLEAN DEFAULT FALSE,
 INSTANCE IN BINARY_INTEGER DEFAULT any_instance,
 FORCE IN BOOLEAN DEFAULT FALSE
);


Здесь:
JOB – Входной параметр уникальный идентификатор задания. Идентификатор генерируется специальной системной последовательностью.
WHAT - анонимный PL/SQL блок, в данном блоке указывается последовательность команд которая будет выполнена в процессе работы задания.
В же в этом параметре можно также писать команды вставки удаления редактирования (inser update delete), а так же команды для создания создания индексов таблиц, создания индексов, ограничений.
NEXT_DATE – дата время следующего выполнения задания.
Если будет указана дата меньше чем текущую дата, то выполнение задания будет начато немедленно.
INTERVAL – Вычисляемая дата следующего выполнения задания в столбце NEXT_DATE. Примеры интервала задания:
NULL
Задание выполнится однократно и удалится.
читать дальше...
автор: Myp3_u_K добавлено: 18 фев 19 просмотры: 22927, комментарии: 2


предыдущие записи