powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
25 сообщений из 260, страница 6 из 11
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537500
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to NewYear

Ну, значит я получу отлуп :)
Не уверен, что этот вариант лучше, чем блокировка. посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп.


Это и есть обычная блокировка/ожидание:) Которая возникает если изменена и еще незакомичена строка а другой сеанс пытается изменить ее тоже. Здесь можно выбрать - ждать окончание другой транзакции или получать отлуп сразу.

посуди сама -- если 2 транзакции делают UPDATE одной строки с SERIALIZABLE, одна из них обязательно получит отлуп.


Уж не хотите ли вы сказать что в DB2 есть dirty write ? Я не поверю! Что произойдет в DB2 если будет попытка изменить уже измененную незакомиченную строку в другом сеансе? Да тоже самое - блокировка.

Оракл не 100% версионник, такой субд вроде не существует. В 100% версионнике можно было бы действительно работать со своей версией данных сколь угодно без учета что происходит "снаружи" а о сюпризах узнавать только при коммите. Но такая реализация имеет интерес чисто теоретический. Так что сюрпризы из-за одновременного изменяющего доступа в одной и той же строке не откладываются до коммита а проявляются немендленно при возникновении конфликта.

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

а вот так что будет :)

insert into test values ('A' , ... );
insert into test values ('B' , ... );


это побочный эффект того что select не накладывает какие бы то нибыло блокировки. Частая ошибка девелоперов перешедших с других СУБД, где блокирование селектом частый прием. Если вышеописанная логика необходима, используйте select for update.

to stdio

Эх, Виолина, Виолина. Ну кто же так легко с голословными утверждениями соглашается?

О MQSeries знаю по наслышке, что это отдельный мощный многофункциональный продукт, что подтвердил NewYear. О том догоняет ли его AQ могу только делать догадки, я счмтала что AQ догнать пока не успел:) Спасибо что просветили.

to ggv

MQ solves many problems, and which Violina mentioned also.

Какие из? И как?
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537510
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

2Violina: Давайте не использовать слово IMHO и "мне кажется" только осязаемые измеримые аргументы.


В отношение пишеться ли UNDO и как в DB2 это были мои догадки. Поэтому я и использую ИМХО и поэтому просила вас о коментарии по этому поводу. За ссылку и объяснение спасибо.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537530
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: Nikolay Kulikov

<quote>
DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm
</quote>

That's quite a statement from a DB2 practitioner...

Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log).

Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that.

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537531
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to vc123

Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log).

Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that.


Для меня это тоже /не побоюсь этого слова:)/ кажется очевидным о чем я и спрашивала. Именно об этом я и говорила.

to Nikolay

Очень интересная статья! еще раз спасибо. Если не возражаете у меня есть пара вопросов.

Используется широко известный метод упреждающей журнализации (write ahead log, WAL), предполагающий, что записи о некоторой операции над базой данных попадают на жесткий диск раньше, чем в базу вносятся изменения, произведенные этой операцией.

Здесь отличий от Oracle нету.

Еще раз забудте про UNDO здесь его пока нет.

Как это нет? Давайте рассмотрим пример:

1) транзакция удалила строки
2) транзакция перезаписала во многих строках старые значения полей новыми (все изменения в оперативной памяти не помещаются)
3) коммит не пока не делается
4) происходит сбой

Вопрос

При восстановлении незакомиченные изменения нужно откатить. Где находится undo информация - данные удаленных строк, старые значения измененных строк? Разве не в журнале?

Поскольку в ARIES на журнал возлагается вся ответственность за восстановление данных , записи журнала достаточно сложны, содержат массу информации и в зависимости от журнализуемого действия имеют различную структуру. Скажем, запись, помещаемая при обычной работе транзакции, несколько отличается от так называемой компенсационной записи (compensation log record, CLR), помещаемой в случае частичного или полного отката транзакции.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537537
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: Nikolay Kulikov

<quote>
DB2 нет _UNDO_ данных почему DB2 должна писать больше в transaction log непонятно ??? Если вам интересно как DB2 пишет в журнал часть теории можно почитать здесь http://]http://www.osp.ru/os/2004/03/066.htm
</quote>

That's quite a statement from a DB2 practitioner...

Well, let me surprise you -- DB2 does have 'undo data'. While Oracle supports ROLLBACKs with a separate structure called the "undo tablespace" or "rollback segments", IBM's DB2 stores both redo and undo portions of the log in one place (transaction log).

Any database implementing rollback must have a way to preserve undo information. I hope there would be no argument about that.

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537539
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I apologize for the double posting. My IE timed-out the first time.

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537541
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, господа теоретики, тогда просвещайте.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
                     Start Journal Physical File (STRJRNPF)                     
                                                                                
 Type choices, press Enter.                                                     
                                                                                
 Physical file to be journaled  . FILE                                          
   Library  . . . . . . . . . . .                  *LIBL                        
                           + for more values                                    
                                                   *LIBL                        
 Journal  . . . . . . . . . . . . JRN                                           
   Library  . . . . . . . . . . .                  *LIBL                        
 Record images  . . . . . . . . . IMAGES         *AFTER                         
 Journal entries to be omitted  . OMTJRNE        *NONE                          
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         Bottom 
 F3=Exit   F4=Prompt   F5=Refresh   F12=Cancel   F13=How to use this display    
 F24=More keys                                                                                                                                                  


есть вот токая строка
Record images . . . . . . . . . IMAGES *AFTER

возможные значения

Record images (IMAGES) - Help

Specifies the kinds of record images to be written to the
journal for changes to records in the file.

The possible values are:


*AFTER
Only after images are written to the journal for
changes to records in this file.

*BOTH

The system writes both before and after images to the
journal for changes to records in this file.


как это можно связать с _UNDO_ данными
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537560
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New Yearэх, stdio, ручки ваши кривые...
Вы должны знать, что:
1) Переход на личности является некорректным приёмом ведения дискуссии. По сути же Вы ничего не написали.
К тому же:
2) Программу писали не мы, а Ваши коллеги. Крупными партнёрами IBM в России они, вроде бы числятся.
Название конторы приводить не буду.
3) И Вы хотите, сказать, что выполнять двухфазную фиксацию транзакции очень удобно? И она страхует от ошибок и от дублирования информации? Ведь так или иначе Вы должны сделать:
commitMQ, затем commitDB
или
commitDB, затем commitMQ
Если сбой происходит между коммитами, то сообщение теряется и дублируется соответственно.
Gt.80 в 5 таблицах, по 16 полей в каждой, да в принципе не важно сколько, важно, что незачем посылать запрос где хитро сплетаются 5 таблиц когда достаточно "select name from table1 where name like ..."
А что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа:
select name from table where name like '...' and q_context = Номер.
Ну, и индекс, конечно по name и q_context сделать...
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537565
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы должны сделать:
commitMQ, затем commitDB
или
commitDB, затем commitMQ

вовсе нет. commit толко один -> commitMQ.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537569
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
commit толко один -> commitMQ
А в БД транзакцию когда фиксировать?
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537579
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я некорректно сказал B DB2 нет UNDO журналов.
В DB2 есть transaction log на основании которого делается ROLLBACK и производится восстановление после сбоя, ROLLFORWARD.
transaction log состоит из записей достаточных как для ROLLBACK (UNDO) так и для ROLLFORWARD (REDO).
Logging Proceess
http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0005425.htm
Update process
http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/c0005426.htm

И этот IO меньше чем в ORACLE. Cмотрим и анализируем отчеты TPC-C места 5,6
Oracle
8-hour log (GB) 1,743.58
И это только REDO logs.
DB2
8 Hour Log (GB) 801.79

P.S. Вышесказанное есть моя личная точка зрения и не может служить официальным заявлением компании IBM
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537589
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет
С интересом почитал нитку. И, хотя были моменты "на грани фола", в целом мне понравилось, что есть таки в форуме люди, умеющие вести разумную дискуссию, не срываясь на flame. Надеюсь, что продолжение будет в том же доброжелательном духе.

riman2 stdio: в DB2 database-engine осуществляет выборку посредством одного из нескольких возможных путей

Reading rows directly from the table (dataspace scan processing)
Reading rows through an access path (using either key selection or key positioning)
Creating an access path directly from the dataspace
Creating an access path from an existing access path (index-from-index)
Using the query sort routine (if conditions are satisfied)
Я выделил заинтриговавший меня метод извлечения данных. Правильно ли я понял, что в DB2 индексы также как-то связаны между собой, как индекс и таблица?

В Oracle подобного нет. Мне известны лишь два случая (bitmap join пропускаю для простоты), когда при доступе к источнику данных, которым является таблица, на конкретном шаге выполнения запроса используется > 1-го индекса, или один и тот же индекс используется дважды:
a) AND-EQUAL
Код: plaintext
1.
2.
3.
SELECT ... FROM A
WHERE A.X = ...
  AND A.Y = ...
и есть индексы по A.X и A.Y
b) BITMAP MERGE (если память не изменяет)
Код: plaintext
1.
2.
3.
4.
SELECT ... FROM A
WHERE A.X = ...
   OR A.X = ...
  AND A.Y = ...
и есть битовый(ые) индекс(-ы) по A.X (OR) и/или A.X и A.Y (AND)

Всего
--
Andrei Kriushin (Oracle8/8i/9i OCP DBA), RDTEX J.S.C.
Disclaimer: Opinions are of my own and not necessar(-il)y...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537590
vc123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: NewYear

UNDO == before images.

Even if 'before images' are disabled, DB2 would automatically write them anyway for transactions (in DB2 jargon 'commitment control').

Apparently, you'd benefit from re-reading IBMs manuals as they say exactly that:

Код: plaintext
1.
Commitment control requires before-images for the system to roll back uncommitted changes. When you open a file under commitment control, the system automatically journals both before-and after-images while the commitment definition is active. If you normally journal only after-images, the system writes before-images only for the changes made under commitment control.

VC
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537596
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторА что одной таблицей с 16+1 полями обойтись нельзя? И делать запрос типа:
select name from table where name like '...' and q_context = Номер.
Ну, и индекс, конечно по name и q_context сделать...

мда :) наверно можно - но только ради премии, за самый оригинальный подход :) если поля нужны из 3 табличек, то вы каким методом джоин будете делать ? или метод джоина в своих хинтах прописывать бум ??? :)
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537601
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
stdio: - have you heard ever about X/Open Distributed Transaction Processing XA Specification?
And how it relates to MQ - amqzag04.pdf from ibm.com sould help.
http://www-306.ibm.com/software/integration/mqfamily/library/manualsa/manuals/crosslatest.html
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537612
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gt.если поля нужны из 3 табличек, то вы каким методом джоин будете делать ?
Так мы вроде бы на одной таблице договорились? Откуда ещё две появились?
ggvhave you heard ever about X/Open Distributed Transaction Processing XA Specification?
Слышал, но внимания не уделял. Правда, в ближайший месяц мне как раз придётся с XA немного повозиться. Вот как удачно всё складывается. ;-)
Но с распредёлёнными транзакциями в СУБД встречался и знаю, что они не без греха: может возникнуть т.н. in-doubt transaction.
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537639
Gt.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gt.
Гость
авторТак мы вроде бы на одной таблице договорились? Откуда ещё две появились?

ок, играем в дурочка :) есть 5 табличек, в них 80 полей, поиск должен уметь искать по всем полям всех таблиц, запросы иногда бывают простенькие возвращающие поля 1 таблички, иногда сложные возвращающие поля всех таблиц.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537865
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
in-doubt transaction != греха, but the normal situation with well-known predefined result
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537926
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visual Explain screenshot
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537930
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скриншот.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537939
riman_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ж) извиняюсь, у меня тоже в первый раз по таймауту вылетело...
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32537949
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ааз
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Index-from-index access method
The database manager can build a temporary index from an existing index without 
having to read all of the rows in the dataspace. Generally speaking, this selection 
method is one of the most efficient. The temporary index that is created contains 
entries for only those rows that meet the selection predicates. This is similar to the 
index created by a select/omit logical file (commonly referred to as a sparse index). 

Where the index-from-index access method is most effective 

The optimizer chooses this method when: 

The query requires an index because it uses grouping, ordering, or join processing. 
A permanent index exists that has selection columns as the left-most keys and the
 left-most keys are very selective (i.e., index scan key positioning can be used). 
The selection columns are not the same as the ordering, grouping, or join-to 
columns. 
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538188
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Violina: you see, you ask questions almost about system design. Using db2 governor, MQSeries, and OS level resource management (solaris and aix) we have an ability to assign resource (like CPU - first at all) to groups of tasks according their privileges. But it's up to a system design.
For example now we have a system where direct access to a database have only a few rare running tasks with almost an access to summary tables, which do not compete with others tasks. Again I may repeat that the db2 itself as an RDBMS is a part of a system only. The other part is, for example, LDAP server. IBM LDAP server. Which is based on db2, of course. And a big part of the info placed in it , with access over LDAP protocol with all its advantages, and with transaction control and triggers usage.
In the described system we have an only issue with locking problem when two or more UOW are trying to update the same row, and it happens often according our business logic, and of course it's solved by serialized access to the row.
There are a lot of 'non-standard' things in the system from the point of view of a 'standard' DBA/developer, but it looks normal from the system architect point of view.

oralce memory management (different type of caches) looks poor if to compare even with sybase 10.x imho.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538334
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Nikolay

Спасибо за объяснения. Признаюсь, я не предполагала что в отношении redo logs у Oracle избыточность такого масштаба по сравнению с DB2. В общем теперь у меня есть более или менее реальное представление в этом вопросе.

to gvv

Using db2 governor, MQSeries, and OS level resource management (solaris and aix) we have an ability to assign resource (like CPU - first at all) to groups of tasks according their privileges.

В Oracle это встроенная фича. С пом. profiles можно ограничить

CPU_PER_SESSION
SESSIONS_PER_USER
CONNECT_TIME
IDLE_TIME
LOGICAL_READS_PER_SESSION

И с помощью resource manager можно делать fine grained management of CPU resources для различных групп - в зависимости от вида активности, времени суток (типа по выходным и внерабочее время можно на просмотр отчетов больше времени выделить).

direct access to a database have only a few rare running tasks with almost an access to summary tables, which do not compete with others tasks.

Обычный метод применения summary tables (materialized views) для разгрузки "горячих" таблиц со соответсующими соображениями - тратить ресурсы на их постоянное поддержание uptodate или позволить delay.

oralce memory management (different type of caches) looks poor if to compare even with sybase 10.x imho.

Ну, я еще не упомянула про multiple buffer pools в зависимости от размера блока заданного для объектов.
Возможно конечно, что такой уровень гранулярности как named pools позволяет творить чудеса. Хотелсь бы увидеть пример задачи/проблемы, которую можно эффективно решить используя named pools и которую было бы сложно или невозможно решить в модели Oracle. Гарантировано удержать важные объекты в кэше модель Oracle тоже позволяет.
...
Рейтинг: 0 / 0
Интилигентность оптимайзера, база без хинтов - реальность?
    #32538437
Splаin_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Splain wrote

По поводу оптимизации запросов:

http://citforum.ru/database/articles/sql_optimization.shtml

Если обратиться к истории, то узнаем, что написанием оптимизатора Oracle занимались в том числе и бывшие сотрудники IBM. Большинство разработок новых и их практическая реализация производились в лабораториях IBM. Поэтому нет ничего удивительного в том, что оптимизатор SQL запросов DB2 лучше, современее и меньше ошибается.
Тому подтверждение - LEO - усовершенствованный алгоритм оценки селективности предикатов.
Собственно говоря поэтому в DB2 отсутствуют хинты как класс - они там просто не нужны. Думаю и Оракл придет к этому через некоторое время. Однако это скорее доставляет некоторое неудобство и увеличение времени разработки разработчикам и на конечном пользователе и производительности промышленных баз не должно особо сказываться.

Дискусия по поводу undo - от лукавого. В этом смысле у DB2 и Оракл просто разные сегменты рынка. Это особенности работы СУБД, и не более. Соответсвенно и сравнивать их глупо - в каждом иднивидуальном случае ответ будет разным.
...
Рейтинг: 0 / 0
25 сообщений из 260, страница 6 из 11
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Интилигентность оптимайзера, база без хинтов - реальность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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