powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как стереть ЛОГ, если в нём нет надобности?
25 сообщений из 40, страница 1 из 2
Как стереть ЛОГ, если в нём нет надобности?
    #33065744
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я наполняю таблицу только один раз 100 млн рекордсами. В таблице уже имеются 1000 рекордсов, которые мне нужно размножить.

Я отключила логирование след. командои:
alter table test activate not logged initially.

Вопрос: значит вставляем без записи в LOG, но он выдал сообщение, что LOG is full, а значит он писал все в LOG.

Как стереть переполненныи LOG, если он не содержит жизненно -важную инфу, чтобы продолжить игры со вставлением 100 млн . рекордсов
? В SQK Server есть опция:
Detachment and deleting of *.ldb file . Работа от этого не нарушается.

Имеется ли что-то подобное в ДБ2?
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33066368
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если от тебе такую фигню говорит, что лог полон, то значит ты его не отключила. утилитку db2 нужно запускать так: db2 -c- чтобы отключить автокоммит. Похоже у тебя после alter table ... сразу commit идет,
и табличка так и остается logged...
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33067146
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему ты не хочешь воспользоваться LOAD from cursor.
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33067285
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanЕсли от тебе такую фигню говорит, что лог полон, то значит ты его не отключила. утилитку db2 нужно запускать так: db2 -c- чтобы отключить автокоммит. Похоже у тебя после alter table ... сразу commit идет,
и табличка так и остается logged...

------------------------------

Запустила с alter table... без логирования, с отменой autocommit и явным commit внутри кода.

alter table test activate not logged initially - действует ли эта команда на таблицу с данными или нужно применять ее только после создания таблицы без данных?


В следующем коде имеется таблица test, в которои есть 1000 записей.
Нужно получить 100 млн записей. Запускаю цикл до 10000 записей и потом commit.


--------
alter table test activate not logged initially
@

BEGIN atomic

declare startRow integer default 0;
declare endRow integer default 0;
declare step integer default 0;
declare lastStep integer default 0;
declare currStep integer default 0;

set startRow = (SELECT MAX(ID) FROM test );
set endRow=10000;
set CountStep = endRow/startRow;

WHILE currStep < CountStep DO
INSERT INTO test(ID,TEXT)
SELECT ID+startRow,TEXT FROM test;
SET currStep = currStep+1;
SET startRow = startRow+1000;

END WHILE;
END
@
commit@

--------------------------

db2cmd db2 -v -td@ -f c:\test\test.sql
-----------------

Нужно запустить этот блок 10000 раз, чтобы получить 100 млн.
Как написать 2 вложенных цикла, чтобы commit делался только после вставки 10000 записеи ?
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33067458
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Как только commit сделаешь, табличка, которая была not logged , опять станет logged. Еще раз говорю - not logged действует до первого commit-a!

2)Если ты сделаешь табличку not logged, то к ней ни одна другая сессия не сможет обратиться. Она заблокируется эксклюзивно!

3)Внутри begin atomic... end - нельзя вставлять commit

Следовательно (=>) сразу в одном блоке begin atomic... end вставляй все свои 100млн записей. Или пиши ХП! которая в цикле будет бахать commit через каждые 1000 записей.

Честно говаря я уж устал все это объяснять.
Скажи, какая структура у твоей таблицы, я те напишу скрипт на заполние тестовыми данными...
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33067604
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
gardenman - это уже перебор....
Вместо удочки ты всучиваешь рыбку....
Так тебе придеться всех до конца дней кормить...
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33079005
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman1)Как только commit сделаешь, табличка, которая была not logged , опять станет logged. Еще раз говорю - not logged действует до первого commit-a!

2)Если ты сделаешь табличку not logged, то к ней ни одна другая сессия не сможет обратиться. Она заблокируется эксклюзивно!

3)Внутри begin atomic... end - нельзя вставлять commit

Следовательно (=>) сразу в одном блоке begin atomic... end вставляй все свои 100млн записей. Или пиши ХП! которая в цикле будет бахать commit через каждые 1000 записей.

Честно говаря я уж устал все это объяснять.
Скажи, какая структура у твоей таблицы, я те напишу скрипт на заполние тестовыми данными...

------------------------------

Имеется SourceTable, в которои заданы 1000 записеи. Необходимо ими наполнить таблицу DestTable до 100 млн записей, изменяя 3 поля, что видно из следующего кода.
Имеются 2 процедуры - одна вставляет 1000 записей, а вторая - в цикле вызывает первую 100000 раз, чтобы получить 100 млн записей. Но все это берет 8 часов.
Выглядет все это не очень логично, ибо Oracle и SQL Server сделали это намного быстрее.
Как можно улучшить performance?

---------------P_PopulateBy1000
create procedure P_PopulateBy1000()
language SQL
MODIFIES SQL DATA
BEGIN
DECLARE startRow INTEGER DEFAULT 0;
SET startRow = (SELECT MAX(Id) FROM DestTable);


INSERT INTO DestTable (PermanentId, Id, F24, F32, F39, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23)
SELECT Id+startRow, Id+startRow, F24, F32, Id+startRow, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23 FROM SourceTable;
commit;
end
-----------------------P_MillionRecPopulation
create procedure P_MillionRecPopulation(in EndNumOfRows integer)
language SQL
MODIFIES SQL DATA
BEGIN
DECLARE startRow INTEGER DEFAULT 0;
DECLARE endRow INTEGER DEFAULT 0;
DECLARE step INTEGER DEFAULT 0;
DECLARE lastStep INTEGER DEFAULT 0;
DECLARE currStep INTEGER DEFAULT 0;


SET startRow = (SELECT MAX(Id) FROM DestTable);
SET endRow = EndNumOfRows;
SET lastStep = (endRow-startRow)/1000;


WHILE (currStep < lastStep) DO
call P_PopulateBy1000();
SET currStep = currStep+1;
SET startRow = startRow+1000;
END WHILE;

end
-----------------------
call P_MillionRecPopulation(100000000)
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33079091
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Toskana gardenman1)Как только commit сделаешь, табличка, которая была not logged , опять станет logged. Еще раз говорю - not logged действует до первого commit-a!

2)Если ты сделаешь табличку not logged, то к ней ни одна другая сессия не сможет обратиться. Она заблокируется эксклюзивно!

3)Внутри begin atomic... end - нельзя вставлять commit

Следовательно (=>) сразу в одном блоке begin atomic... end вставляй все свои 100млн записей. Или пиши ХП! которая в цикле будет бахать commit через каждые 1000 записей.

Честно говаря я уж устал все это объяснять.
Скажи, какая структура у твоей таблицы, я те напишу скрипт на заполние тестовыми данными...

------------------------------

Имеется SourceTable, в которои заданы 1000 записеи. Необходимо ими наполнить таблицу DestTable до 100 млн записей, изменяя 3 поля, что видно из следующего кода.
Имеются 2 процедуры - одна вставляет 1000 записей, а вторая - в цикле вызывает первую 100000 раз, чтобы получить 100 млн записей. Но все это берет 80 часов.
Выглядет все это не очень логично, ибо Oracle и SQL Server сделали это намного быстрее.
Как можно улучшить performance?

---------------P_PopulateBy1000
create procedure P_PopulateBy1000()
language SQL
MODIFIES SQL DATA
BEGIN
DECLARE startRow INTEGER DEFAULT 0;
SET startRow = (SELECT MAX(Id) FROM DestTable);


INSERT INTO DestTable (PermanentId, Id, F24, F32, F39, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23)
SELECT Id+startRow, Id+startRow, F24, F32, Id+startRow, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23 FROM SourceTable;
commit;
end
-----------------------P_MillionRecPopulation
create procedure P_MillionRecPopulation(in EndNumOfRows integer)
language SQL
MODIFIES SQL DATA
BEGIN
DECLARE startRow INTEGER DEFAULT 0;
DECLARE endRow INTEGER DEFAULT 0;
DECLARE step INTEGER DEFAULT 0;
DECLARE lastStep INTEGER DEFAULT 0;
DECLARE currStep INTEGER DEFAULT 0;


SET startRow = (SELECT MAX(Id) FROM DestTable);
SET endRow = EndNumOfRows;
SET lastStep = (endRow-startRow)/1000;


WHILE (currStep < lastStep) DO
call P_PopulateBy1000();
SET currStep = currStep+1;
SET startRow = startRow+1000;
END WHILE;

end
-----------------------
call P_MillionRecPopulation(100000000)
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33079805
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SET startRow = (SELECT MAX(Id) FROM DestTable);

По Id существует индекс?
В каком табличном пространстве располагается таблица?
Какой буферпул привязан к табличному пространству?
Каков размер этого буферпула?
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33079906
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman
Код: plaintext
1.
SET startRow = (SELECT MAX(Id) FROM DestTable);

По Id существует индекс?
В каком табличном пространстве располагается таблица?
Какой буферпул привязан к табличному пространству?
Каков размер этого буферпула?

-----------------------------
-- Database Name: MyDBName

CONNECT TO MyDBName;

------------------------------------

-- DDL Statements for BUFFERPOOLS --

------------------------------------

CREATE BUFFERPOOL "BP_MyDBName_4K" SIZE 10000 PAGESIZE 4096 NOT EXTENDED STORAGE;

CONNECT RESET;

CONNECT TO MyDBName;

------------------------------------

-- DDL Statements for TABLESPACES --

------------------------------------

CREATE REGULAR TABLESPACE TS_MyDBName IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY SYSTEM

USING ('C:\DBF\ts_MyDBName_m4')

EXTENTSIZE 32

PREFETCHSIZE 16

BUFFERPOOL BP_MyDBName_4K

OVERHEAD 24.100000

TRANSFERRATE 0.900000

DROPPED TABLE RECOVERY ON;

-- Mimic tablespace

ALTER TABLESPACE SYSCATSPACE

PREFETCHSIZE 16

OVERHEAD 24.100000

TRANSFERRATE 0.900000;


ALTER TABLESPACE TEMPSPACE1

PREFETCHSIZE 16

OVERHEAD 24.100000

TRANSFERRATE 0.900000;





------------------------------------------------

-- DDL Statements for table "INLAND_M000"."MyDBName_1"

------------------------------------------------



CREATE TABLE "INLAND_M000"."MyDBName_1" (

"PERMANENTID" INTEGER NOT NULL ,

"ID" INTEGER NOT NULL ,

"F24" INTEGER NOT NULL ,

"F32" INTEGER NOT NULL ,

"F39" INTEGER ,

"F36" SMALLINT ,

"F35" SMALLINT ,

"F1" VARCHAR(27) NOT NULL ,

"F26" VARCHAR(60) NOT NULL ,

"F27" VARCHAR(60) NOT NULL ,

"F28" VARCHAR(60) NOT NULL ,

"F29" VARCHAR(135) NOT NULL ,

"F30" VARCHAR(135) NOT NULL ,

"F31" VARCHAR(135) NOT NULL ,

"F20" VARCHAR(39) NOT NULL ,

"F34" VARCHAR(30) NOT NULL ,

"F21" VARCHAR(30) NOT NULL ,

"F22" VARCHAR(75) NOT NULL ,

"F37" VARCHAR(60) NOT NULL ,

"F38" VARCHAR(3) NOT NULL ,

"F23" VARCHAR(75) NOT NULL )

IN "TS_MyDBName" ;

ALTER TABLE "INLAND_M000"."MyDBName_1" VOLATILE CARDINALITY;



-- DDL Statements for indexes on Table "INLAND_M000"."MyDBName_1"


CREATE UNIQUE INDEX "INLAND_M000"."C1_ID" ON "INLAND_M000"."MyDBName_1"

("ID" ASC);


-- DDL Statements for indexes on Table "INLAND_M000"."MyDBName_1"


CREATE INDEX "INLAND_M000"."I1_F24" ON "INLAND_M000"."MyDBName_1"

("F24" ASC);


-- DDL Statements for indexes on Table "INLAND_M000"."MyDBName_1"


CREATE INDEX "INLAND_M000"."I1_F32" ON "INLAND_M000"."MyDBName_1"

("F32" ASC);


-- DDL Statements for indexes on Table "INLAND_M000"."MyDBName_1"


CREATE UNIQUE INDEX "INLAND_M000"."I1_PERMID" ON "INLAND_M000"."MyDBName_1"

("PERMANENTID" ASC);

COMMIT WORK;

CONNECT RESET;

TERMINATE;

-- Generate statistics for all creators

-- The db2look utility will consider only the specified tables

-- Creating DDL for table(s)

@
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33079925
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши-те ка вот так:
CREATE UNIQUE INDEX "INLAND_M000"."C1_ID" ON "INLAND_M000"."MyDBName_1" ("ID" ASC) ALLOW REVERSE SCANS;

И покажите план запроса для (SELECT MAX(Id) FROM DestTable); до и после изменения индекса.
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33079958
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanНапиши-те ка вот так:
CREATE UNIQUE INDEX "INLAND_M000"."C1_ID" ON "INLAND_M000"."MyDBName_1" ("ID" ASC) ALLOW REVERSE SCANS;

И покажите план запроса для (SELECT MAX(Id) FROM DestTable); до и после изменения индекса.

-----------------
Что такое план запроса?
Можно на англицком, пжл-ста.

Можно попробовать с курсором, но не проходит такой батч:

BEGIN ATOMIC

declare startRow integer default 0;
declare endRow integer default 0;
declare step integer default 0;
declare lastStep integer default 0;
declare currStep integer default 0;

set startRow = (SELECT MAX(Id) FROM My_Scheme.MyTable_1);
set endRow=5701000;
set lastStep = (endRow-startRow)/1000;

WHILE currStep < lastStep DO
DECLARE myCurs CURSOR FOR SELECT Id+startRow, Id+startRow, F24, F32, Id+startRow, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23 FROM My_Scheme.MyTable_1_1K;
LOAD FROM myCurs OF cursor INSERT INTO My_Scheme.MyTable_1;
SET currStep = currStep+1;
SET startRow = startRow+1000;

END WHILE;
END
@
commit
@
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080036
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nkulikovА почему ты не хочешь воспользоваться LOAD from cursor.

--------------

Я очень хочу, но следующий код не проходит
BEGIN ATOMIC

declare startRow integer default 0;
declare endRow integer default 0;
declare step integer default 0;
declare lastStep integer default 0;
declare currStep integer default 0;

set startRow = (SELECT MAX(Id) FROM My_Scheme.MyTable_1);
set endRow=5701000;
set lastStep = (endRow-startRow)/1000;

WHILE currStep < lastStep DO
DECLARE myCurs CURSOR FOR SELECT Id+startRow, Id+startRow, F24, F32, Id+startRow, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23 FROM My_Scheme.MyTable_1_1K;
LOAD FROM myCurs OF cursor INSERT INTO My_Scheme.MyTable_1;
SET currStep = currStep+1;
SET startRow = startRow+1000;

END WHILE;
END
@
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080111
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда процедура скомпилируется, то образуется связанный с ней пакет:
Код: plaintext
1.
2.
3.
4.
5.
6.
select 
   substr(rtrim(routinename)||'.'||rtrim(routineSCHEMA), 1 , 30 ) PROC_NAME,
   'P'||char(LIB_ID) PACKAGE_NAME
from 
   syscat.ROUTINES
@

Используя имя пакета можно глянуть каков пран запроса при помощи утилиты db2expln

Я почти уверен что у вас там TBSCAN
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080210
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему ты не хочешь воспользоваться рекуксивным расширением WITH. Легко можно сгенерировать случайные данные. Я приводил пример на 10000 человек.
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080231
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего страшного.. пусть делает одинаково для всех баз.
Тут самый прикол как раз и заключается в использовании select MAX()...
Хотя вместо этой фигни запросто можно было бы воспользоваться или SQUENCE или INDENTITY
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080341
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nkulikovА почему ты не хочешь воспользоваться рекуксивным расширением WITH. Легко можно сгенерировать случайные данные. Я приводил пример на 10000 человек.

--------------------

Да мне не нужно генерировать случайные данные,т.к. уже имеем таблицу с данными - 1000 записей.
Не известно начальное значение Ид.
Нужно размножить эти записи до 100 млн, чтобы Id не повторялся, т.е. если 1000 записеи уже имеются, то к мах Id прибавить 1000, чтобы получить след. Id
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080352
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanНичего страшного.. пусть делает одинаково для всех баз.
Тут самый прикол как раз и заключается в использовании select MAX()...
Хотя вместо этой фигни запросто можно было бы воспользоваться или SQUENCE или INDENTITY

---------------------

Поясните про прикол поподробнее.
В чем же прикол, если Batch, в котором Мах(Id) ищется только один раз, для размножения до 1 млн записей берет 1 час, то че там говорить о 100 млн

BEGIN ATOMIC

declare startRow integer default 0;
declare endRow integer default 0;
declare step integer default 0;
declare lastStep integer default 0;
declare currStep integer default 0;

set startRow = (SELECT MAX(Id) FROM MyScheme.MyTable);
set endRow=1000000;
set lastStep = (endRow-startRow)/1000;

WHILE currStep < lastStep DO
INSERT INTO MyScheme.MyTable (PermanentId, Id, F24, F32, F39, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23)
SELECT Id+startRow, Id+startRow, F24, F32, Id+startRow, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23 FROM MyScheme.MyTable_1K;
SET currStep = currStep+1;
SET startRow = startRow+1000;

END WHILE;
END
@
commit
@
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080381
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
ну вообще-то, учитывая что есть индекс и свежая (!) статистика, max() срабатывает мухоментально.
если же у вас для него приходиться шуршать по дискам делая tablescan, то куда уж.
примерно так я понял gardenman'a
и что самое удивительное - согласен
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080386
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
а после вставки первой (и последующих) порций данных, у вас уже не свежая статистика (даже если и была таковой в начале).
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080430
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая процедура выполняется?
P_MillionRecPopulation(in EndNumOfRows integer)
Какую процедру она вызывает?
P_PopulateBy1000()
Сколько раз она вызывается?
100000
В какой процедуре сторит select max()?
в P_PopulateBy1000()
Сколько раз выполняется select max()?
100000
....
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080443
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая процедура выполняется?
P_MillionRecPopulation(in EndNumOfRows integer)
Какую процедру она вызывает?
P_PopulateBy1000()
Сколько раз она вызывается?
100000
В какой процедуре сторит select max()?
в P_PopulateBy1000()
Сколько раз выполняется select max()?
100000
....
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080461
Toskana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanКакая процедура выполняется?
P_MillionRecPopulation(in EndNumOfRows integer)
Какую процедру она вызывает?
P_PopulateBy1000()
Сколько раз она вызывается?
100000
В какой процедуре сторит select max()?
в P_PopulateBy1000()
Сколько раз выполняется select max()?
100000
....

-------------------
Ну да, все правильно в случае с процедурами.

А если без них обойтись только батчем, и с autocommit и без него для вставки 1 млн записей требуется 1 час.

BEGIN ATOMIC

declare startRow integer default 0;
declare endRow integer default 0;
declare step integer default 0;
declare lastStep integer default 0;
declare currStep integer default 0;

set startRow = (SELECT MAX(Id) FROM MyScheme.MyTable);
set endRow=1000000;
set lastStep = (endRow-startRow)/1000;

WHILE currStep < lastStep DO
INSERT INTO MyScheme.MyTable (PermanentId, Id, F24, F32, F39, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23)
SELECT Id+startRow, Id+startRow, F24, F32, Id+startRow, F36, F35, F1, F26, F27, F28, F29, F30, F31, F20, F34, F21, F22, F37, F38, F23 FROM MyScheme.MyTable_1K;
SET currStep = currStep+1;
SET startRow = startRow+1000;

END WHILE;
END
@
commit
@
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33080568
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>CREATE BUFFERPOOL "BP_MyDBName_4K" SIZE 10000 PAGESIZE 4096 NOT EXTENDED STORAGE;

4096*10000 = 40M... маловато для таблички в 100 млн записей
...
Рейтинг: 0 / 0
Как стереть ЛОГ, если в нём нет надобности?
    #33081378
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще много чего можно сделать чтобы ускорить работу:
1) MANAGED BY SYSTEM - Лучше сделать MANAGED BY DATABASE, например у ORACLE и MSSQL вообще нет ничего подобного MANAGED BY SYSTEM
2) Я не знаю как вы создавали базу данных. Лог и контейнеры нужно разнести по дискам, если есть возможность. И, если есть возможность разнести по дискам собственно табличку и ее индексы. Т.е. в идеали у нас должно быть 4 диска - для таблицы, для индексов, для лога и и для системы
3) В DB2 имеются таблички FOR INSERT ONLY
4) когда создаете индексы и таблицу, то делать их нужно в разных табличных пространствах, и соответственно привязывать к разным буферпулам.
5) на табличку, в которой 1000 исходных записей создайте отдельное табличное пространство и, соответственно свой буферпул, чтобы она не вымывалась из кэша.
6) ну, и естественно в зависимости от размера памяти на вашем компьютере,
примерно 75% отдайте под буферпулы DB2
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как стереть ЛОГ, если в нём нет надобности?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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