powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Битовые значения
25 сообщений из 127, страница 4 из 6
Битовые значения
    #39637506
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushТак как это у меня промежуточная таблица только для импорта Кларион-ФБ индексов нет совсем. Вообще нет ничего кроме таблиц. ни ограничений на поля, ничего.

Подскажите - какие параметры надо поменять чтобы увеличить кеш.Если индексов нет, то увеличение кеша ничего не даст.

akrushПодскажите точное название параметра FWForced Writes
...
Рейтинг: 0 / 0
Битовые значения
    #39637513
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvakrush,

при инсерте кэш никак не влияет. Кэш вообще надо выставлять сообразно архитектуре и экспериментально - классик от 512 до 2048, суперклассик от 512 до 4096, суперсервер от 8192 до половины RAM.

Влад написал увеличить, поэтому и спрашиваю.
Там не только инсер, а еще и изменение дат (-36161 день) и все текстовые поля замена Нул

Размер страницы 8192
Архитектура: ServerMode = Super
Платформа: Вин10 32бита

Все параметры по умолчанию. подскажите может что-то изменить.
Там нашел параметр #CpuAffinityMask = 0. Он влияет на использование именно процессора или на ядра. Подскажите, плиз :'(
...
Рейтинг: 0 / 0
Битовые значения
    #39637516
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
у меня проц i7, 4 потока
...
Рейтинг: 0 / 0
Битовые значения
    #39637529
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushТам нашел параметр #CpuAffinityMask = 0. Он влияет на использование именно процессора или на ядра. Подскажите, плиз :'(

это не трогай!
...
Рейтинг: 0 / 0
Битовые значения
    #39637545
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush..........
Влад написал увеличить, поэтому и спрашиваю.
.........
Ну он еще писал
Убедиться, что используются препарированные запросы.и это пожалуй сейчас важнее кеша
...
Рейтинг: 0 / 0
Битовые значения
    #39637548
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да какие препарированные запросы, он же написал "текстовый скрипт".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Битовые значения
    #39637556
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,
Препарированных запросов нет.
Есть скрипт, выглядит вот так (по одной из таблиц):

update APPLIC set DATA_SG=dateadd(day,-36161,DATA_SG);');
update APPLIC set DATA_RG=dateadd(day,-36161,DATA_RG);');
update APPLIC set DATA_R=dateadd(day,-36161,DATA_R);');
update APPLIC set DATA_C=dateadd(day,-36161,DATA_C);');
update APPLIC set DATA_S=dateadd(day,-36161,DATA_S);');
update APPLIC set DATA_E=dateadd(day,-36161,DATA_E);');
update APPLIC set DATA_X=dateadd(day,-36161,DATA_X);');
update APPLIC set DATA_Y=dateadd(day,-36161,DATA_Y);');
update applic set data_sg=null where data_sg<cast('01.01.1950' as DATE);');
update applic set data_rg=null where data_rg<cast('01.01.1950' as DATE);');
update applic set data_r=null where data_r<cast('01.01.1950' as DATE);');
update applic set data_c=null where data_c<cast('01.01.1950' as DATE);');
update applic set data_s=null where data_s<cast('01.01.1950' as DATE);');
update applic set data_e=null where data_e<cast('01.01.1950' as DATE);');
update applic set data_x=null where data_x<cast('01.01.1950' as DATE);');
update applic set data_y=null where data_y<cast('01.01.1950' as DATE);');
update APPLIC set SURN1='' where SURN1 is null;');
update APPLIC set SURN2='' where SURN2 is null;');
update APPLIC set F_NAM='' where F_NAM is null;');
update APPLIC set M_NAM='' where M_NAM is null;');
update APPLIC set INDX='' where INDX is null;');
update APPLIC set BLD_NUM='' where BLD_NUM is null;');
update APPLIC set CORP_NUM='' where CORP_NUM is null;');
update APPLIC set FLAT='' where FLAT is null;');
update APPLIC set PHONE='' where PHONE is null;');
update APPLIC set PLACE='' where PLACE is null;');
update APPLIC set RIZNE='' where RIZNE is null;');
update APPLIC set SUR_NAM=SURN1||SURN2;');
commit;
...
Рейтинг: 0 / 0
Битовые значения
    #39637558
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
в конце примера запроса лишняя " ');"
просто копипастил из делфей
...
Рейтинг: 0 / 0
Битовые значения
    #39637562
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

ну вот для update кеш уже важен.

Кстати вот для этого

Код: sql
1.
2.
3.
update APPLIC set DATA_SG=dateadd(day,-36161,DATA_SG);
update APPLIC set DATA_RG=dateadd(day,-36161,DATA_RG);
...



можно и в один запрос собрать

Код: sql
1.
2.
3.
4.
update APPLIC 
set 
  DATA_SG=dateadd(day,-36161,DATA_SG),
  DATA_RG=dateadd(day,-36161,DATA_RG), ....;
...
Рейтинг: 0 / 0
Битовые значения
    #39637592
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushЕсть скрипт, выглядит вот такВсе эти апдейты нужно заменить одним, это же ужас-ужас, а не скрипт
...
Рейтинг: 0 / 0
Битовые значения
    #39637632
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"APPLIC" - Это та самая External table - или уже таблицы внутри БД Firebird ?
...
Рейтинг: 0 / 0
Битовые значения
    #39637637
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВсе эти апдейты нужно заменить одним

Это не так просто, там зависимые значения....

Код: sql
1.
2.
3.
4.
update APPLIC set SURN1='' where SURN1 is null;
update APPLIC set SURN2='' where SURN2 is null;
....
update APPLIC set SUR_NAM=SURN1||SURN2;



а это, кажетсЯ, как раз в FB2 правили, чтобы "в лоб" не работало как в IB времена.
и после переписывания с "денормализацией" скрипт будет запутанный до чертиков.

Это на PSQL надо делать, бежать в цикле, в цикле неспеша и с удобством отрабатывать временные переменные, в конце цикла из них один UPDATE по курсору (fb2) или по RDB$DB_KEY (fb3)
...
Рейтинг: 0 / 0
Битовые значения
    #39637640
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

она никак не может быть External table, ибо для них UPDATE не поддерживается
...
Рейтинг: 0 / 0
Битовые значения
    #39637641
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushupdate APPLIC set SUR_NAM=SURN1||SURN2;');

"ПетровВодкин" слитно, без пробелов и дефисов ?
...
Рейтинг: 0 / 0
Битовые значения
    #39637643
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

ну тогда эти преобрзаования надо делать на этапе импорта из ET в SQL-таблицу.

PSQL-блок, FOR-SELECT из ET - и уже чистые, переработанные записи в INSERT.

И возможно иногда внутри этого цикла делать snapshot, не знаю ,поможет ли это кэшу или наоборот.

или можно в FOR-SELECT из ET добавлять FIRST/SKIP и гнать в автономных транзакциях по 10 тыс. строк
...
Рейтинг: 0 / 0
Битовые значения
    #39637652
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochЭто не так просто, там зависимые значения....

Да, придётся документацию про COALESCE() читать. Это непосильная задача для аффтара.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Битовые значения
    #39637665
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

дело не в поиске функции, а в копипасте, в денормализации кода

вместо одного вызова case/coalesce/where на столбец - придется делать два.

КАЖЕТСЯ больше там внутренних зависимостей нет, если я не пропустил и если в скрипт больше ничего не добавится.

небольшая копипаста управляема, ЕСЛИ не понадобится усложнить задачу
иначе копипаста может пойти в 2 слоя, три слоя и разрастатся соответственно
...
Рейтинг: 0 / 0
Битовые значения
    #39637667
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochakrushupdate APPLIC set SUR_NAM=SURN1||SURN2;');

"ПетровВодкин" слитно, без пробелов и дефисов ?

Извините, но я не приводил структуру таблицы.
В кларион поле фамилия разбито на 2: 7 символов (и по ним строится ключ для поиска по фамилии) + 23 символа остаток от фамилии.
Вот я из и прикручиваю слитно.

Вот структура временной таблицы (в которую тупо импортирую, а потом будет разбор по нескольким таблицам):

CREATE TABLE APPLIC (
APP_NUM BIGINT,
CAL_NUM SMALLINT,
CAL_LAST SMALLINT,
US_ID SMALLINT,
SUR_NAM VARCHAR(30),
SURN1 VARCHAR(7),
SURN2 VARCHAR(23),
F_NAM VARCHAR(25),
M_NAM VARCHAR(20),
INDX VARCHAR(6),
VUL_COD INTEGER,
BLD_NUM VARCHAR(7),
CORP_NUM VARCHAR(2),
FLAT VARCHAR(9),
PHONE VARCHAR(7),
PLACE VARCHAR(1),
RIZNE VARCHAR(10),
NUMB SMALLINT,
INCOM DECIMAL(9,2),
OWN_FRM SMALLINT,
HOSTEL SMALLINT,
CM_AREA DECIMAL(6,2),
NM_AREA DECIMAL(6,2),
BALC DECIMAL(5,2),
AD_AREA DECIMAL(5,2),
FROG DECIMAL(5,2),
FRUG DECIMAL(5,2),
FL_PAY DECIMAL(9,2),
NM_PAY DECIMAL(9,2),
NM_PAY1 DECIMAL(9,2),
CFG_JKP SMALLINT,
CFG_SGTP SMALLINT,
DEBT SMALLINT,
RES1 SMALLINT,
RES2 INTEGER,
RES3 INTEGER,
RES4 SMALLINT,
SUBSID DECIMAL(9,2),
SUBSUD DECIMAL(9,2),
SUBSID1 DECIMAL(9,2),
RITE1 INTEGER,
RITE2 INTEGER,
RITE3 INTEGER,
RITE4 INTEGER,
RITE5 INTEGER,
REEK BIGINT,
DATA_SG DATE,
DATA_RG DATE,
DATA_R DATE,
DATA_C DATE,
DATA_S DATE,
DATA_E DATE,
DATA_X DATE,
DATA_Y DATE,
MARK SMALLINT,
STOP SMALLINT
);

В этой таблице 56 столбцов, из них 12 битовых полей от 4 до 16 значений записано по битно. Если их расписать все по полям (я пробовал) получается более 150 столбцов. Сама таблица уже разбита на несколько
...
Рейтинг: 0 / 0
Битовые значения
    #39637672
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
Имею ввиду в финальной БД таблица APPLIC разбита на 4 таблицы, но финальная структура еще обсуждается.
Если у вас всех можно попросить совета, какую структуру лучше всего сделать - я с удовольствием поделюсь ссылкой на структуру (она у меня в HTML) и с еще большим удовольствием выслушаю советы.
...
Рейтинг: 0 / 0
Битовые значения
    #39637721
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Преобразования данных в вашем скрипте - тривиальны
2. Преобразования каждой конкретной записи - если брать только расчёты, за вычетом чтения с диска и записи на диск - практически мгновенны
3. Ваша пробелма - огромный объём данных и многократная их обработка
4. Каждая команда вашего скрипта, если очень грубо, проводит полное копирование (в смысле чтение+запись) таблицы. А команд 28.

Вывод - вам нужно объединить импорт данных в Firebird и преобразование (расчёт).
Тогда копирование данных будет выполняться один раз, вместо 28.

Прочитали строку из External Table в переменные, в тех же переменных преобразовали, вставили в таблицу Firebird уже готовые преобразованные данные, перешли к следующей строке.

21374800
...
Рейтинг: 0 / 0
Битовые значения
    #39637723
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushВот я из и прикручиваю слитно.

В частности, чтобы их "прикручивать слитно" совершенно не нужны в таблице APPLIC два столбца SURN1 и SURN2 - зачем они там?

Оставьте только SUR_NAM. И записывайте в него уже посчитанное объединённое значение.
...
Рейтинг: 0 / 0
Битовые значения
    #39637729
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамДа какие препарированные запросы, он же написал "текстовый скрипт".
Ну вот в нём и проблема
...
Рейтинг: 0 / 0
Битовые значения
    #39637740
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochakrushВот я из и прикручиваю слитно.

В частности, чтобы их "прикручивать слитно" совершенно не нужны в таблице APPLIC два столбца SURN1 и SURN2 - зачем они там?

Оставьте только SUR_NAM. И записывайте в него уже посчитанное объединённое значение.

не могу. Компонент импорта тупо гонит все в таблицу. Пока еще не понял как перехватить "на лету" каждую запись и преобразовать как мне надо. Автор компонента подсказывал - на выходных попробую все-таки понять как.
...
Рейтинг: 0 / 0
Битовые значения
    #39637744
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Этот автор исходники компонента тебе дал?
...
Рейтинг: 0 / 0
Битовые значения
    #39637745
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush... Пока еще не понял как перехватить "на лету" каждую запись и преобразовать как мне надо. ....
Зачем на лету
Насколько я понял все загоняется в промежуточную таблицу
а потом будет раскидываться по другим
ну вот во время этого "раскидывания" и делай все что надо
(восстанавливай Фамилию, устанавливай даты ну и остальное что надо)
...
Рейтинг: 0 / 0
25 сообщений из 127, страница 4 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Битовые значения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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