powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ищу книгу "Эффективное проектирование приложений Oracle"
5 сообщений из 30, страница 2 из 2
Ищу книгу "Эффективное проектирование приложений Oracle"
    #38753147
nolocky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGubinnolocky,

Ну например я сейчас читаю Тома Кайта "Оракл для профессионалов. Архитектура, методики программирования и особенности версий 9i, 10g и 11g" по поводу отсутствия индексов на форенкеях и приведенные примеры блокировок у меня не воспроизводятся. Использую:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
"CORE 11.2.0.3.0 Production"
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

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

Ты про вот это? http://richardfoote.wordpress.com/2010/11/10/oracle11g-new-locking-modes-when-policing-fk-constraints-a-wolf-at-the-door/

Так господи, это вообще никогда не встречающийся в реальной практике сценарий.
Никто в здравом уме так не удаляет данные из справочников, которые сидят под PK, особенно если у тебя сотни миллионов записей под FK (удаляют с временным отключением FK в небизнес-время, если уж сильно припечет)

А в таблицах master-detail всегда есть индекс по FK, так что этот пример - просто высосан из пальца.
...
Рейтинг: 0 / 0
Ищу книгу "Эффективное проектирование приложений Oracle"
    #38753197
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGubinВ книге утверждается, что если есть неиндексированный форенкей, то при удалении записи из родительской таблицы, будет лочиться полностью дочерняя. Такого результата мне не удалось добиться.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Ses1> create table plch_parent(n primary key) as select level from dual connect by level <= 3;

Table created.

Ses1> create table plch_child(n int references plch_parent);

Table created.

Ses1> insert into plch_child values(1);

1 row created.

Код: plsql
1.
2.
Ses2> delete plch_parent where n = 2;
-- висим ...

Код: plsql
1.
2.
Ses3> insert into plch_child values(3);
-- висим ...

Код: plsql
1.
2.
3.
Ses1> commit;

Commit complete.

Код: plsql
1.
2.
3.
1 row deleted.

Ses2> 

Код: plsql
1.
2.
3.
1 row created.

Ses3> 
...
Рейтинг: 0 / 0
Ищу книгу "Эффективное проектирование приложений Oracle"
    #38755314
lucky88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раз уж пошла такая пьянка, посоветуйте по оптимизации чего хорошего почитать?
...
Рейтинг: 0 / 0
Ищу книгу "Эффективное проектирование приложений Oracle"
    #38755367
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lucky88Раз уж пошла такая пьянка, посоветуйте по оптимизации чего хорошего почитать?Тот, кто не Свифт и не Кэррол.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ищу книгу "Эффективное проектирование приложений Oracle"
    #39536661
sera1088
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicAlexGubinВ книге утверждается, что если есть неиндексированный форенкей, то при удалении записи из родительской таблицы, будет лочиться полностью дочерняя. Такого результата мне не удалось добиться.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Ses1> create table plch_parent(n primary key) as select level from dual connect by level <= 3;

Table created.

Ses1> create table plch_child(n int references plch_parent);

Table created.

Ses1> insert into plch_child values(1);

1 row created.

Код: plsql
1.
2.
Ses2> delete plch_parent where n = 2;
-- висим ...

Код: plsql
1.
2.
Ses3> insert into plch_child values(3);
-- висим ...

Код: plsql
1.
2.
3.
Ses1> commit;

Commit complete.

Код: plsql
1.
2.
3.
1 row deleted.

Ses2> 

Код: plsql
1.
2.
3.
1 row created.

Ses3> 




Причем в данном примере показаны именно кратковременные TM-блокировки на время выполнения DML операции.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ищу книгу "Эффективное проектирование приложений Oracle"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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