Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по транзакциям
|
|||
|---|---|---|---|
|
#18+
Верно ли утверждение, что запросы(update, delete, insert) в пределах одной транзакции, либо изменяют данные, либо вообще не изменяют данные(в случае какого-либо сбоя, например отключение электричества) ? при параметрах БД PRAGMA journal_mode = DELETE PRAGMA synchronous = 2 (FULL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 18:59 |
|
||
|
Вопрос по транзакциям
|
|||
|---|---|---|---|
|
#18+
и правильно ли я понимаю, что если в одной транзакции 10к инсертов, то после коммита транзакции они все станут видимыми для селекта единовременно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 19:07 |
|
||
|
Вопрос по транзакциям
|
|||
|---|---|---|---|
|
#18+
RobinBobinВерно ли утверждение, что запросы(update, delete, insert) в пределах одной транзакции, либо изменяют данные, либо вообще не изменяют данные(в случае какого-либо сбоя, например отключение электричества) ?В этом и есть суть транзакции. RobinBobinпри параметрах БД PRAGMA journal_mode = DELETE PRAGMA synchronous = 2 (FULL)А это не важно. Это влияет на то как и когда именно изменения произошедшие в "принятой" транзакции будут записаны в основную базу данных. Оборванные транзакции и отменненые в любом случае в базу не попадут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 22:04 |
|
||
|
Вопрос по транзакциям
|
|||
|---|---|---|---|
|
#18+
RobinBobinи правильно ли я понимаю, что если в одной транзакции 10к инсертов, то после коммита транзакции они все станут видимыми для селекта единовременно?Да конечно. Впрочем есть два возражения: 1) Не принятые изменения не видны другим транзакциям, а внутри работающей они очень даже видны. То есть свои собственные insert ты будешь видеть всегда. 2) Это может зависеть от настроек базы. Если уровень изоляции низкий - то изменения видны сразу, если высокий то только после коммита. (за это отвечает pragma read_uncommitted) Представь что у тебя в офисе сидят несколько человек и все пишут на своих листках бумаги. Потом они эти листки складывают в общую папку. Пока человек пишет на своем листке - никто не знает что он там написал. А когда листок лежит в папке все читающие папку могут увидеть текст на листе. При этом сам пишущий видит то что он пишет. А если уровень изоляции маленький, то это значит все остальные могут подойти и заглянуть пишущему через плечо и увидеть недописанный текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 22:14 |
|
||
|
Вопрос по транзакциям
|
|||
|---|---|---|---|
|
#18+
White OwlRobinBobinи правильно ли я понимаю, что если в одной транзакции 10к инсертов, то после коммита транзакции они все станут видимыми для селекта единовременно?Да конечно. Впрочем есть два возражения: 1) Не принятые изменения не видны другим транзакциям, а внутри работающей они очень даже видны. То есть свои собственные insert ты будешь видеть всегда. 2) Это может зависеть от настроек базы. Если уровень изоляции низкий - то изменения видны сразу, если высокий то только после коммита. (за это отвечает pragma read_uncommitted) Спасибо за ответы. На сколько я понял, при стандартных настройках, при выполнении транзакции, если я сделаю селект в другом потоке программы, то данные будут не видны, пока транзакция не выполнится, а когда выполнится, то станут видны сразу все данные. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 15:10 |
|
||
|
Вопрос по транзакциям
|
|||
|---|---|---|---|
|
#18+
RobinBobinСпасибо за ответы. На сколько я понял, при стандартных настройках, при выполнении транзакции, если я сделаю селект в другом потоке программы, то данные будут не видны, пока транзакция не выполнится, а когда выполнится, то станут видны сразу все данные. так?Нууу.... примерно так, плюс-минус. Идею транзакций ты понял правильно. Но теперь ты напоролся на проблему что нету такой вещи как "стандартные настройки у sqlite". Есть только начальные настройки конкретной сборки. То есть если ты используешь какой-либо dll пришедший откуда-то - очень рекомендуется прогнать при начале работы запросы типа: pragma read_uncommited; и запомнить результат. Это и будут стандартные настройки той конкретной dll которую ты используешь. Либо принудительно выставлять pragma read_uncommited = true/false при каждом подключении к базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 19:35 |
|
||
|
|

start [/forum/topic.php?fid=54&msg=38038859&tid=2008960]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 162ms |

| 0 / 0 |
