powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Повышение производительности сервера
15 сообщений из 40, страница 2 из 2
Повышение производительности сервера
    #33533314
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
а я бы отправил человека на курсы DB2, и очень хорошо бы другого на что-нибудь по проектированию...
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33534329
Chacanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за рекомендации по структуре таблицы.
Конечно базы не идеальные.
Но несколько вопросов.
1) в таблице есть первичный ключ
CONSTRAINT KEY_RAZ PRIMARY KEY ( P1 ) ,
наверно он используется при выполнении триггера.
Вы пишете, что надо создать индекс.
2) на поле CODE_USR на которое также повешан foreign key
А что, должен быть обязательно еще и индекс на это поле?

3) Да, Вы правы, в таблице есть поля, которые мы просто завели для дальнейшего использования при необходимости.
Используются только PL01-PL03 CHARACTER (50) - для хранения ФИО.
Действительно , надо было сделать как VARCHAR
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33534386
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы проверить используется или нет индекс - нужно посмотреть на план запроса. Это можно сделать через Command Center.
И, кроме того, чтобы нормально виделся индекс - нужно собрать по таблице и индексам статистику. см. RUNSTATS
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33536402
Guest02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу курсов - хорошее предложение, но послать некого. Ну нет у нас админов на DB2!... к сожалению :( Поэтому будем благодарны за любые конструктивные советы специалистам имеющим опыт настройки DB2

Решили упростить ситуацию. Попробовали след.образом.
1. Заново установили Db2 со всеми значениями по умолчанию (соответственно таблицы, индесы в одном TS, размеры страниц, буф.пулов и т.д.все взято как предлагает Db2)
2. Создана обычная таблица
CREATE TABLE DB2ADMIN.DBTEST ( P1 INTEGER NOT NULL , P2 INTEGER , P3 INTEGER , P4 CHARACTER (10) , P5 CHARACTER (10) , P6 CHARACTER (240) , P7 DATE , P8 CHARACTER (10) , P9 CHARACTER (10) , P10 DOUBLE ) ;
ALTER TABLE DB2ADMIN.DBTEST ADD CONSTRAINT KEY_TESTDB PRIMARY KEY ( P1) ;
CREATE TRIGGER DB2ADMIN.P1 NO CASCADE BEFORE INSERT ON DB2ADMIN.DBTEST REFERENCING NEW AS new FOR EACH ROW MODE DB2SQL
SET NEW.P1 = coalesce((select MAX(DB2ADMIN.DBTEST.P1)from DB2ADMIN.DBTEST ),0) +1

Далее, опытным путем установлено, что время:
вставки одной записи при пустой таблице: 0.003 сек.
вставки одной записи при 15000 записей: 0.04 сек.
вставки одной записи при 100000 записей (с триггером): 0.108739 сек.
вставки одной записи при 100000 записей (без триггера): 0.030475 сек.
(т.е. про триггер Вы были правы, но он в том или ином виде все равно нужен для обеспечения уникальности p1. Все выполняется одним пользователем)

Главный вопрос! Можно ли надеяться, что путем настройки(перенастройки или других мероприятий) конфигурации DB2 реально добиться повышения производительности на операциях вставки в 10-100 раз?
Спасибо.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33536573
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ: нет

Ваш триггер будет тормозить ВСЕГДА. И чем дальше, тем больше. И, более того, это не зависит от того, какая это база данных MSSQL или DB2 или ORACLE. У вас проблема в проектировании.

Вы посмотрели на план запроса?
Вы собрали статистику как вам сказали? (наверное не в курсе что план запроса генерируется исходя из статистики? и наверное не знаете как это делать?)

Если ничего менять не хотите, то по крайней мере создайте дополнительный индекс в обратном направлении:
CREATE UNIQUE INDEX TTTT ON DB2ADMIN.DBTEST (P1 DESC)

и запустите RUNSTATS:
RUNSTATS ON TABLE DB2ADMIN.DBTEST FOR INDEXES ALL

На вашем месте я бы делал так (вообще без триггеров):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE SEQUENCE DB2ADMIN.SEQ1 AS INTEGER START WITH  0  INCREMENT BY  1  CACHE  100 ;

CREATE TABLE DB2ADMIN.DBTEST (
	P1 INTEGER NOT NULL ,
	P2 INTEGER ,
	P3 INTEGER ,
	P4 CHARACTER ( 10 ) ,
	P5 CHARACTER ( 10 ) ,
	P6 CHARACTER ( 240 ) ,
	P7 DATE ,
	P8 CHARACTER ( 10 ) ,
	P9 CHARACTER ( 10 ) ,
	P10 DOUBLE
);

ALTER TABLE DB2ADMIN.DBTEST ADD CONSTRAINT KEY_TESTDB PRIMARY KEY ( P1);


SELECT P1 
FROM FINAL TABLE (
   INSERT INTO DB2ADMIN.DBTEST (P1, ... список других полей...) VALUES (NEXTVAL FOR DB2ADMIN.SEQ1, ... список значений других полей...)
)
;


По-моему тут было написано достаточно чтобы сделать все правильно.
Поэтому - закончим.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33536741
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest02
Главный вопрос! Можно ли надеяться, что путем настройки(перенастройки или других мероприятий) конфигурации DB2 реально добиться повышения производительности на операциях вставки в 10-100 раз?


В специфических случаях. Если вы на RAID'е (особенно 5, 6, 10), например, удачные/неудачные настройки могут стоить очень дорого на одной и той же базе. Задача заключается в том, чтобы заставить винчестеры массива работать одновременно, а не по очереди.

Распределение данных по дискам и где лежит журнал транзакций, тоже имеет значение.

Разницу между SMS и DMS не проверял (для данных пользуюсь только DMS, хотя для системы SMS), но, наверное, должна быть.

"все взято как предлагает Db2" - но ведь табличные пространства в том wizard'е по умолчанию получаются SMS, хотя можно и DMS настроить.

Потом, после создания базы, из CC можно позвать Configuration Adviser, который предложит вам другой размер буферного пула и многих других параметров.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33536766
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman
Если ничего менять не хотите, то по крайней мере создайте дополнительный индекс в обратном направлении:
CREATE UNIQUE INDEX TTTT ON DB2ADMIN.DBTEST (P1 DESC)


или дропнуть primary key, затем
CREATE UNIQUE INDEX ... ALLOW REVERSE SCANS
и вновь добавить primary key (будет использован существующий индекс).

Но это так, к слову. Конечно, надо выкинуть тот триггер и использовать sequence.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33536922
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa[quot gardenman]
или дропнуть primary key, затем
CREATE UNIQUE INDEX ... ALLOW REVERSE SCANS
и вновь добавить primary key (будет использован существующий индекс).


Хм... не знал что так можно, спасибо!))
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33541137
Guest02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовали убрать триггер и по вашей рекомендации вместо него использовали sequence. Insert на данной таблице стал срабатывать быстрее в 30 раз. Спасибо большое. Тему прошу не закрывать. Все Ваши рекомендации будут проработаны. Результаты исследований выложим сюда м.б. кому то будет интересно.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33541274
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
это - не повышение производительности.
Это - устранение элементарных общеизвестных грабель.
Это - следствие лени читать доки.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33542579
Guest02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит мы не входим в число людей которые владеют общеизвестными истинами. Поэтому и пришли сюда. С удовольствием почитаем документацию в которой написано о предпочтении sequence по отношению ... если поделитесь (можно на aam63@mail.ru) У нас есть базовый курс по DB2 (перевод правда не идеальный но общий смысл понять можно)
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33542610
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
поиском по форуму можно нарыть множество ссылок. На полезные ресурсы. И подписаться на db2magazine. В РФ доставляют бесплатно. Но на аглицком.
В нем было много замечательных статей. По типу - откуда есть пошли package.
Там же и про sequence было
У меня сколько-то номеров есть в архиве, могу дать почитать, кто вблизи столицы.
А на db2magazine.com поиск тоже был.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33542933
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
кстати, в последнем db2magazine есть статья "Manage, don't tune"
Некоторые интересные вопросы управления производительностью приложений рассматриваются.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33546013
krestianin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сайте db2magazine набрал поиск "Manage, don't tune" - вывалилось 326 документов.

Если не составит труда, можно ссылку? Или где на сайте искать более конкретно?
Спасибо.
...
Рейтинг: 0 / 0
Повышение производительности сервера
    #33546295
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
сорри, надо было сразу.
http://db2magazine.com/story/showArticle.jhtml?articleID=173500378
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Повышение производительности сервера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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