Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Знатоки DB2. Поделитесь пожалуйств опытом, как можно повысить производительность сервера в части повышения скорости операций записи. Пример, есть таблица из 12 полей, 1 ключ первичный на поле типа INTEGER, + 4 индекса на полях VARCHAR(32), VARCHAR(500), INTEGER, TIMESTAMP. Время записи - 0.7517 сек. Говорят - это много. Какие настройки можно сделать на сервере, чтобы ускорить операции записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 09:46 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
ChacanovЗнатоки DB2. Поделитесь пожалуйств опытом, как можно повысить производительность сервера в части повышения скорости операций записи. Пример, есть таблица из 12 полей, 1 ключ первичный на поле типа INTEGER, + 4 индекса на полях VARCHAR(32), VARCHAR(500), INTEGER, TIMESTAMP. Время записи - 0.7517 сек. Говорят - это много. Какие настройки можно сделать на сервере, чтобы ускорить операции записи. Количество записей в таблице? VARCHAR(500) - это круто...) Индексы и таблица в одном табличном пространстве? Если в разных таб. пространствах, то индексы и таблица в одном буферпуле или разных? Какой SQL используете - статический или динамический? План запроса смотрели? Кто еще шоркает по таблице (много ли конкурирующих юзеров) ? на каком уровне изоляции работают приложения? Каков размер страницы у таб пространства и каков размер буферпула? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:24 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
и эта, gardenman, про размещение журналов спроси, посикоку речь идет об INSERT, если я правильно понял. Ну и режуим для таблиц только для вставки. Но это уже совсем крайний случай и никаких UPDATE. И вообще - 0.7517 сказали много на каком основании? И много если один пользователь или тысячи? И прочие загрузки сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:49 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
да, и конечно кол-во page cleaner, prefetchers, и вообще, performance tuning это исскуство, и вот так вот, без доки/знаний, в форуме, где народ не знает ни нагрузки вашего сервака, ни особенности вашего приложения.... Наивно ждать внятного ответа кроме RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 10:51 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
db2 get snapshot for all on SAMPLE и закинь сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:31 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
предварительно надо сделать Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:35 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
да снапшотов не один надо, а несколько, в разные временные промежутки, отследить тенденции, проанализировать - работы не мало, время. Да к этому вывод vmstat, чтоб нагрузку на ОС отследить, на память, I/O.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 11:42 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
В первом приближении я посоветовал бы разобраться с полем VARCHAR(500) и индексом по нему (удалите этот индекс и посмотрите скорость вставки без него), и убедиться, что журнал транзакции находится на отдельном, быстром диске. А потом уже заниматься прочим ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 12:09 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
виктор, как всегда, в точку. Журнал это первое. а странные поля это второе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 12:19 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
В принципе в этой таблице все индексы кроме первичного ключа можно удалить. Только вот это делу не поможет. Точно такая же операция, на другой, значительно дохлой машине, выполняется в 10-100 раз быстрее. Поэтому дайте пожалуйста совет, именно по тюнингу DB2 а не конкретной таблицы. Что касается специфики приложения - это web-application. А обсуждаемая таблица содержит лог обращений к приложению. Обнавление этой таблицы не презусматривается, только вставка (самая распространенная операция для данной таблицы), чтение и удаление (очистка лога). Еще раз повторюсь, что таблица тут никакого значения не имеет, ибо вставка в другую таблицу, где меньше ключей и меньше записей, занимает такое же время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2006, 16:17 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
2 Девелопер Можно здесь немного прочитать, может и найдети что-то нового Tips for improving INSERT performance in DB2 Universal Database И еще... SMS/DMS? Хотя если "выполняется в 10-100 раз быстрее" что у Вас там с lock'ами то? P.S. Подозреваю что если делать типа INSERT INTO ... WITH UR, SELECT ... WITH UR скорость заметно возрастет :) Lock avoidance in DB2 UDB V8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2006, 17:14 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Прилагаю Файл конфигурации DB2 по своему вопросу. Прошу помощи при анализации файла конфигурации. Что там не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 12:14 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
ChacanovПрилагаю Файл конфигурации DB2 по своему вопросу. Прошу помощи при анализации файла конфигурации. Что там не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 12:16 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Еще инфу по TableSpace и BufferPool, а также скрипт на создание таблицы и индексов, триггеров, имеются или нет внешние ключи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 12:30 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
ёпрст.... Да вы уж лучше бы на камеру засняли вашу конфигурацию, и в avi приложили.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 12:35 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
В zip-файле картинки по TS и BufferPoll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 13:59 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Ну а скрипт на создание таблицы, и индексов где? Статистику по таблице давно собирал? Сколько всего строк в таблице? внешние ключи куда-нить навешены? SMS - не самый лучший выбор для TABLESPACE. Судя по всему (предполагаю конечно) - лог и этот tablespace - на одном диске находятся (это плохо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 14:21 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
ChacanovВ zip-файле картинки по TS и BufferPoll Шо, серйозно??? Прямо таки картинки и сделал, как я советовал?! Ну перец, адназначна! А avi слабо??? Ну не буду я напрягать голову, каким таким образом мне посмотреть содержимое ms word файла, которое суть есть вывод db2 get db[m] cfg. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 14:58 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Я предлагаю вам сделать простое действие Во время работы вашего приложения запустить db2support -d <Имя-Вашей-БД> и положить сюда db2support.zip После этого можно будет обсуждать, что у вас не так с производительностью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:04 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
И почитать, сколько работы приходится проделывать СУБД, чтобы попытаться понять, где находится узкое место. Что происходит при вставке. В частности: * "разборки" с блокировками (ожидание, установка) * исполнение триггеров before * поиск свободного места в таблице * чтение страницы в таблице, которая будет модифицирована * чтение индексов, которые будут перестроены * исполнение триггеров after * запись в журнал транзакций * очистка грязных страниц буферного пула * /что-то ещё, что я забыл упомянуть/ Поэтому вопросы типа ChacanovПоэтому дайте пожалуйста совет, именно по тюнингу DB2 а не конкретной таблицы. ChacanovПрошу помощи при анализации файла конфигурации. Что там не так. у меня (и, очевидно, не только у меня) вызывают в лучшем случае растерянность. Что там не так? Ну, а что там "так"? Ведь даже прекомпиляция INSERT может быть весьма тормозящей (при соответствующих триггерах)! А можно буферный пул сделать большой-большой, чтобы всё свопилось. Можно взгромоздить базу на RAID5, не поменяв в конфигурации БД ничего (хотя, несмотря ни на какое количество cleaner'ов, по-моему, не стоит ставить БД на RAID5). Можно поместить журнал транзакций на древний IDE-шный винчестер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 16:54 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Victor - браво. Великолепно, блин. Умеют же сформулировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 17:49 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Приложил скрипт на создание таблицы, с индексами, и внешними ключами на справочные таблицы, число записей - более 90000, накопилось за год, планируется дальнейшее заполнение. Конечно есть и другие таблицы. В файле приведены временные характеристики при вводе 4 записей, число работавших пользователей - 1 Статистику по таблице не собирали. Лог и tablespace - на одном диске находятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 09:32 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Короче очень много проблем сделанных при проектировании: 1) это триггер BEFORE Код: plaintext 1. 2. 3. 4. Я бы во-первых использовал IDENTITY либо SEQUENCE у вас агрегатная функция MAX которая a)блокикует всю таблицу в момент выполнения. б) по умолчанию DB2 не может делать REVERSE SCANS на PRIMARY key. Поэтому нужно было бы по крайней мере создать индекс (P1 DESC), чтобы оптимизатор брал последнее дначение пользуясь индексом. Хотя совет однозначный не создавать индекс - а переделать триггер и уйти на SEQUENCE. во вторых: у вас нет индекса на поле CODE_USR на которое также повешан foreign key аналогичная ситуация с CODE_OBR, CODE_PRICH, CODE_REZ в-третьих: Что-то мне не нравится PL01-PL10 CHARACTER (50), DP01-DP10 DATE, ZL01-ZL10 INTEGER Сдается мне что это вообще должна быть отдельная таблица, и к тому же я бы рекомендовал заменить CHAR(50) на VARCHAR(50). А то получается строка уже - 500 байт, несмотря на то что там наверняка пусто. А в триггере BEFORE сделал бы RTRIM(LTRIM(PL01)) - типа удалял бы ведущие и последние пробелы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 10:18 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Да, пока ничего не сделал, то - хотел бы я увидеть план запроса на инсерт в visual explain ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 10:20 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Еще один совет - я б такую широкую таблицу поместил в TS c размером страницы 8K ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 10:33 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
а я бы отправил человека на курсы DB2, и очень хорошо бы другого на что-нибудь по проектированию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 11:04 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за рекомендации по структуре таблицы. Конечно базы не идеальные. Но несколько вопросов. 1) в таблице есть первичный ключ CONSTRAINT KEY_RAZ PRIMARY KEY ( P1 ) , наверно он используется при выполнении триггера. Вы пишете, что надо создать индекс. 2) на поле CODE_USR на которое также повешан foreign key А что, должен быть обязательно еще и индекс на это поле? 3) Да, Вы правы, в таблице есть поля, которые мы просто завели для дальнейшего использования при необходимости. Используются только PL01-PL03 CHARACTER (50) - для хранения ФИО. Действительно , надо было сделать как VARCHAR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 14:25 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Чтобы проверить используется или нет индекс - нужно посмотреть на план запроса. Это можно сделать через Command Center. И, кроме того, чтобы нормально виделся индекс - нужно собрать по таблице и индексам статистику. см. RUNSTATS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 14:35 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
По поводу курсов - хорошее предложение, но послать некого. Ну нет у нас админов на 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 раз? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 11:05 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Ответ: нет Ваш триггер будет тормозить ВСЕГДА. И чем дальше, тем больше. И, более того, это не зависит от того, какая это база данных 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. По-моему тут было написано достаточно чтобы сделать все правильно. Поэтому - закончим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 11:54 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Guest02 Главный вопрос! Можно ли надеяться, что путем настройки(перенастройки или других мероприятий) конфигурации DB2 реально добиться повышения производительности на операциях вставки в 10-100 раз? В специфических случаях. Если вы на RAID'е (особенно 5, 6, 10), например, удачные/неудачные настройки могут стоить очень дорого на одной и той же базе. Задача заключается в том, чтобы заставить винчестеры массива работать одновременно, а не по очереди. Распределение данных по дискам и где лежит журнал транзакций, тоже имеет значение. Разницу между SMS и DMS не проверял (для данных пользуюсь только DMS, хотя для системы SMS), но, наверное, должна быть. "все взято как предлагает Db2" - но ведь табличные пространства в том wizard'е по умолчанию получаются SMS, хотя можно и DMS настроить. Потом, после создания базы, из CC можно позвать Configuration Adviser, который предложит вам другой размер буферного пула и многих других параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 12:36 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
gardenman Если ничего менять не хотите, то по крайней мере создайте дополнительный индекс в обратном направлении: CREATE UNIQUE INDEX TTTT ON DB2ADMIN.DBTEST (P1 DESC) или дропнуть primary key, затем CREATE UNIQUE INDEX ... ALLOW REVERSE SCANS и вновь добавить primary key (будет использован существующий индекс). Но это так, к слову. Конечно, надо выкинуть тот триггер и использовать sequence. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 12:42 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa[quot gardenman] или дропнуть primary key, затем CREATE UNIQUE INDEX ... ALLOW REVERSE SCANS и вновь добавить primary key (будет использован существующий индекс). Хм... не знал что так можно, спасибо!)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 13:32 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
попробовали убрать триггер и по вашей рекомендации вместо него использовали sequence. Insert на данной таблице стал срабатывать быстрее в 30 раз. Спасибо большое. Тему прошу не закрывать. Все Ваши рекомендации будут проработаны. Результаты исследований выложим сюда м.б. кому то будет интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 15:15 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
это - не повышение производительности. Это - устранение элементарных общеизвестных грабель. Это - следствие лени читать доки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 15:55 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
Значит мы не входим в число людей которые владеют общеизвестными истинами. Поэтому и пришли сюда. С удовольствием почитаем документацию в которой написано о предпочтении sequence по отношению ... если поделитесь (можно на aam63@mail.ru) У нас есть базовый курс по DB2 (перевод правда не идеальный но общий смысл понять можно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 09:33 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
поиском по форуму можно нарыть множество ссылок. На полезные ресурсы. И подписаться на db2magazine. В РФ доставляют бесплатно. Но на аглицком. В нем было много замечательных статей. По типу - откуда есть пошли package. Там же и про sequence было У меня сколько-то номеров есть в архиве, могу дать почитать, кто вблизи столицы. А на db2magazine.com поиск тоже был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 09:49 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
кстати, в последнем db2magazine есть статья "Manage, don't tune" Некоторые интересные вопросы управления производительностью приложений рассматриваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 11:27 |
|
||
|
Повышение производительности сервера
|
|||
|---|---|---|---|
|
#18+
На сайте db2magazine набрал поиск "Manage, don't tune" - вывалилось 326 документов. Если не составит труда, можно ссылку? Или где на сайте искать более конкретно? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 12:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=43&tid=1605520]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
90ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 435ms |

| 0 / 0 |
