powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
21 сообщений из 96, страница 4 из 4
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983590
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

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

не нужно ничего менять, нужно понять, что пример иллюстрирует. нужно осознать, что при переключении поведение транзакций кардинально изменится.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983591
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

авторДа, нужно потратить ресурсы на tempdb, и что такого?

На производстве существуют планы закупки оборудования, причем на следующий год. Как, например, оценить затраты на рост tempdb, существуют ли какие-то способы оценки?
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983603
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
msLex

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

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


Да, только ваш пример отлично демонстрирует, что в большинстве случаев "проблемы" при переходе на RCSI вызваны изначальными ошибками в проектировании, и те же проблемы возможны и при блокировочном RS.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983606
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
msLex

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

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

Да, речь о том, что если в криво написанной логике все работало из-за блокировок по стечению обстоятельств то, в этом случае, процессы сломаются. О чем я писал выше: "Нельзя вот так просто перейти на RCSI" без полной, трудозатратной ревизии кода и рефакторинга + аппаратные затраты. Писать с учетом RCSI и планировать "железо" надо с первой строчки продукта.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983610
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, если бы MS устроили так, что RCSI можно было бы включить хинтом или SET настройкой, при том, что для остального кода RC остался при включение RCSI для базы, то проблем не было бы. Можно было предусмотреть два режима - активный, когда все запросы обрабатываются с версиями и пассивный, когда только указанные запросы так обрабатываются. Вот это был бы коммерческий подход.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983616
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
нужно осознать, что при переключении поведение транзакций кардинально изменится.
Осознаем. Как только покажете пример "на RC не хрень, а на RCSI - хрень".
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983632
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Да, речь о том, что если в криво написанной логике все работало из-за блокировок по стечению обстоятельств
Можете привести пример такого стечения обстоятельств на RC, которые всегда стекаются так, что неявно обеспечивается правильный результат?
Владислав Колосов
Писать с учетом RCSI и планировать "железо" надо с первой строчки продукта.
Писать надо с учетом RC. Потому что поведение транзакции определяется TIL. А с точки зрения TIL - RC и RCSI этого одно и тоже.
А вы и адаптатор никак не можете этого понять.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983635
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Однако, если бы MS устроили так, что RCSI можно было бы включить хинтом или SET настройкой
MS поступили мудрее - RC можно включать хинтом readcommittedlock.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983738
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
SET ALLOW_SNAPSHOT_ISOLATION ON не обязывает переключать RC в RCSI.
Что, так и не удосужился почитать про разницу между SI и RCSI?

Ну и пример не засчитан, ибо не показывает требуемое.
На будущее: прежде чем надувать щеки - внимательно читай, что тебе пишут.

На этом я с тобой прощаюсь.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983761
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

такой сценарий разве не приведет к ошибке?

1 процесс: UPDATE SET f1 = 'a' WHERE ... f1 = 'b'
2 процесс: IF NOT EXISTS (SELECT * FROM ... WHERE f1='a') INSERT ... 'a'

где f1 уникально. Второй процесс при RCSI прочитает 'b' и попытается вставить 'a', но первый процесс также будет обновлять на 'a'.
В случае RC 2 процесс при выполнении SELECT будет заблокирован до обновления 'b' на 'a'.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983766
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Владислав Колосов
Однако, если бы MS устроили так, что RCSI можно было бы включить хинтом или SET настройкой
MS поступили мудрее - RC можно включать хинтом readcommittedlock.


Относительно READCOMMITTEDLOCK я размышлял, однако, оснащать 99% таблиц таким хинтом не хочется.
Однако, я увидел, что при подключении реплики доступности AlwaysON сервер начинает резервировать 14 байт в строках, если реплика включена в режиме чтения. Надо подумать на возможностью включения RCSI, поскольку реплику не так давно включили.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983781
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
такой сценарий разве не приведет к ошибке?
Приведет.
Но если на RC поменять процессы местами, получите такую же ошибку.

Просто вы рассуждаете не в контексте TIL, а в контексте специфики реализации этого TIL через блокировки.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983790
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
alexeyvg
пропущено...
Да, отлично, "просто не дождались".
Если эффективный менеджер приказывает корячить галочку в настройках, а потом через 3 часа корячит обратно, "не шмогла"(с), то цирк не в RCSI, цирк в организации.


Не думаю, что это верный подход к определению, на производстве сферические кони никого не интересуют и в боевой обстановке меткость оружия снижается на порядок и больше. Технология классная, только внедрить ее нельзя без плясок с бубном и неожиданными последствиями. Вы же покупаете автомобиль с уверенностью, что он заведется и поедет. не так ли? Это коммерческий продукт и работать он должен соответственно.
И у Оракла оно работало бы так же, если бы версионность была не изначально, а переключалось бы из блокировочника.
И что?

А 10 тонный кран должен поднимать 100 тонн, и на жигули можно нагрузить как на товарный поезд?

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

Это физика, против не попрёшь, называй "цирком" или не называй.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983822
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm

На будущее: прежде чем надувать щеки - внимательно читай, что тебе пишут.


transaction 1
Код: sql
1.
2.
insert into detail_table select id, 20 from main_table where id=1 and isAllowed=1;
commit;



transaction 2
Код: sql
1.
2.
3.
4.
begin tran
update main_table set isAllowed=0 where id=1;
delete from  detail_table where id=1;
commit;



на RC isAllowed=0 гарантирует пустоту в detail_table, на RCSI же будет хрень (tm).
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983897
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
на RC isAllowed=0 гарантирует пустоту в detail_table, на RCSI же будет хрень (tm).
Как получить хрень (tm) на блокировочном RC. Пошаговая инструкция.1. Подготовка таблиц и данных
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
use tempdb;
set transaction isolation level read committed;
go

create table dbo.main_table (id int, IsAllowed bit);
create table dbo.detail_table (id int, some_value int);
create table dbo.some_table (id int, some_value int);

insert into dbo.main_table values (1, 1);
insert into dbo.some_table values (1, 1);
go


2. Открываем новое соединение и выполняем
Код: sql
1.
2.
3.
4.
5.
6.
7.
use tempdb;
set transaction isolation level read committed;
go

begin tran;

update dbo.some_table set some_value = 2 where id = 1;


3. Открываем новое соединение и выполняем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
use tempdb;
set transaction isolation level read committed;
go

begin tran;

insert into dbo.detail_table
select
 mt.id, st.some_value
from
 (select top (1) id from dbo.main_table where IsAllowed = 1 order by id) mt join
 dbo.some_table st on st.id = mt.id;

commit;


4. Открываем новое соединение и выполняем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
use tempdb;
set transaction isolation level read committed;
go

begin tran;

update dbo.main_table set IsAllowed = 0;
delete from dbo.detail_table where id = 1;

commit;


5. В соединении из п.2 выполняем commit

6. Любуемся хренью (tm)
Код: sql
1.
2.
3.
4.
5.
select
 mt.id, mt.IsAllowed, dt.some_value
from
 dbo.main_table mt join
 dbo.detail_table dt on dt.id = mt.id;

...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983910
hck2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

безусловно можно говнокодить, так что не будет работать ни в RC ни RCSI. но ты хотел пример который работает на RC и хрень на RCSI
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983920
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Владислав Колосов
пропущено...


Не думаю, что это верный подход к определению, на производстве сферические кони никого не интересуют и в боевой обстановке меткость оружия снижается на порядок и больше. Технология классная, только внедрить ее нельзя без плясок с бубном и неожиданными последствиями. Вы же покупаете автомобиль с уверенностью, что он заведется и поедет. не так ли? Это коммерческий продукт и работать он должен соответственно.
И у Оракла оно работало бы так же, если бы версионность была не изначально, а переключалось бы из блокировочника.
И что?

А 10 тонный кран должен поднимать 100 тонн, и на жигули можно нагрузить как на товарный поезд?

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

Это физика, против не попрёшь, называй "цирком" или не называй.


Спасибо,- поржал!: нынешним утром напряг сразу двух человек увидев в рабочей базе адский триггер с курсором. Ну вот так "сложилось",- и всё тут. И ведь нормально работает уже полгода как В общем, у коллег выходные "незадались",- но они об этом пока не догадываются...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983921
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hck2
безусловно можно говнокодить, так что не будет работать ни в RC ни RCSI
Говнокодить - это писать так, как-будто TIL RC гарантирует что-еще, кроме отсутствия грязного чтения.
Твой пример и есть такой говнокод, что и было продемонстрировано.
А то, что ты не понял как и почему это происходит - так это твои проблемы - учи матчасть. Или вежливо попроси объяснить.
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39983959
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах, мечты об идеальном коде, который учитывает возможность существования RCSI сейчас и тем более учитывал это в 2010ish году. Вот бы весь SQL код писали только профессионалы... Как же жестоко устроен мир, что всякие там... пейзане... фи... пишут код, который, при включении RCSI меняет свое поведение! *упал в обморок*

*пришел в себя* А если подумать... не все так идеально в мире SQL, да и в принципе, экспертные знания SQL сами не приносят счастья, тем более, когда надо вот так, с переходами на ты ...
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39984050
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
Ах, мечты об идеальном коде, который учитывает возможность существования RCSI
Опять...
Не надо учитывать существование RCSI или еще какой-нибудь реализации TIL RC.
Надо просто правильно писать под этот самый TIL RC. И это должно быть требованием, иначе обязательно будут сюрпризы, именуемые "хренью".
...
Рейтинг: 0 / 0
Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
    #39984283
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Владислав Колосов
такой сценарий разве не приведет к ошибке?
Приведет.
Но если на RC поменять процессы местами, получите такую же ошибку.

Просто вы рассуждаете не в контексте TIL, а в контексте специфики реализации этого TIL через блокировки.


Это да. Есть такие неудачные решения, которые работают если не с использованием багов, то фич. А когда баг исправляют, решение перестаёт работать.
...
Рейтинг: 0 / 0
21 сообщений из 96, страница 4 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Размещение БД в оперативной памяти с асинхронной записью на диск(без потери данных)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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