Гость
Форумы / Informix [игнор отключен] [закрыт для гостей] / Вопрос про фрагментирование таблицы. / 18 сообщений из 18, страница 1 из 1
09.08.2017, 10:57
    #39502398
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Добрый день, господа. Нужен совет.
Есть таблица. В ней около 2 млрд. строк и размером около 2 Тб (без индексов). Таблица фрагментирована round-robin (60 dbspace под данные и 8 под индексы). В нее ежедневно заливаются данные и ежеквартально чистятся примерно 10 % строк (данные льются и чистятся по полю с типом datetime). Есть задача перенести данные на новый сервер перезаливкой в течении 2-3 недель
Возникает вопрос, а не изменить ли тип фрагментирования с round-robin на фрагментирование по выражению на поле с типом datetime. С одной стороны «хлопотно» каждый год создавать новые dbspace, но с другой стороны легко удалять уже не используемые фрагменты

В книге Carlton Doe "IBM Informix Dynamic Server 11" автор не советует применять фрагментирование по полям с типом данных serial, data, datetime.
Можете посоветовать как поступить?
И еще вопрос. Применяя
Код: sql
1.
EXECUTE FUNCTION task("table compress table…").

Данная функция будет применятся к только добавленным строкам или она будет «молотить» по всей таблице.

Версия 11.70.FC6
...
Рейтинг: 0 / 0
09.08.2017, 11:32
    #39502427
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Сергей Б,

ИМХО если есть возможность провести адекватное нагрузочное тестирование, то его результат стоит намного больше абстрактных советов.
Кроме того не забывайте про очень важный момент - расфазировка данных. Для меня например выбор круговой фрагментации был решающим из-за того что невозможно было смириться с незаполненностью одних пространств и риском получить ошибку из=за переполненности других.
...
Рейтинг: 0 / 0
09.08.2017, 13:13
    #39502532
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
cpr,

Спасибо за ответ.
Для тестирования нет времени, да и долго очень. Недавно обсуждалась тема про оптимизации таблиц
http://www.sql.ru/forum/1255054/optimizaciya-tablicy
Я на тестовой среде на таком же объеме данных "зарядил"
Код: plsql
1.
execute function task('table repack shrink'...) 


Месяц работало, дальше не выдержал, прибил сессию. А вот архив логов создалось на 290 Гб.
...
Рейтинг: 0 / 0
09.08.2017, 13:40
    #39502558
яфшуеі
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
"хлопотно" - почему?
ведь можно создать partition в одном пространстве.
Т.е. можно добавлять partition

В случае перевода на фрагментирование по выражению по полю с datetime вы сразу привязываете размер фрагмента
к количеству записей за указанный период.
А если количество будет больше и будет превышение лимита на размер?
...
Рейтинг: 0 / 0
09.08.2017, 14:36
    #39502624
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
яфшуеі,

В книге Carlton Doe "IBM Informix Dynamic Server 11" автор не советует применять фрагментирование по полям с типом данных serial, data, datetime.

Вот я и спрашиваю, может кто-то может опровергнуть или посоветовать обходной вариант?

Код: plaintext
1.
2.
В случае перевода на фрагментирование по выражению по полю с datetime вы сразу привязываете размер фрагмента 
к количеству записей за указанный период.
А если количество будет больше и будет превышение лимита на размер?

У меня все dbspace авторасширяемые. Так, что превышение лимита не будет. К тому же БД создана со страницей 16 К
...
Рейтинг: 0 / 0
09.08.2017, 17:32
    #39502803
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Сергей Бяфшуеі,

У меня все dbspace авторасширяемые. Так, что превышение лимита не будет. К тому же БД создана со страницей 16 К

Лимит есть всегда, для 16K страниц насколько я понимаю будет ограничение 128ГБ на размер фрагмента
...
Рейтинг: 0 / 0
10.08.2017, 21:20
    #39503732
Вопрос про фрагментирование таблицы.
Если по полю даты идёт основной поток выборок для анализа, то фрагментация по нему позволит автоматически пользоваться пропуском при сканировании тех пространств где по условиям выбора данных заведомо нет.

И это может быть очень большим плюсом перед round-robin.

С другой стороны, сейчас у вас вставка идёт считайте в 8 раз параллельнее - конкуренция за индекс меньше в 8 раз из-за 8 пространств.

При фрагментации по дате этого не будет.

В зависимости от соотношения SELECT/INSERT/DELETE и глубины времени во WHERE можно сделать квартальную или даже месячную разбивку.

Только не забывайте EXEC_DLL=1 для ALTER FRAGMENT при добавлении нового куска и учитыайте время работы ALTER. Впрочем при добавке куска который по диапазону заведомо не перекрывается с имеющимися требуется анализ только REMINDER. А там должно быть скорее всего пусто.
...
Рейтинг: 0 / 0
11.08.2017, 16:03
    #39504177
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Яковлев Павел,
Большущее спасибо!!!

А что это за "зверь" EXEC_DLL . Поиск в ГУГЛе ничего не выдает. Ссылку не выложите?

И еще, Вы можете прислать мне на адрес sesvjudi@yandex.ru свой e-mail. Хотелось бы пообщаться.
...
Рейтинг: 0 / 0
14.08.2017, 22:03
    #39505295
Вопрос про фрагментирование таблицы.
Это я по памяти криво написал

Зверь отгоняет нафиг всех от таблицы что бы не ждать когда её изволят освободить

Вот кусок из документации

Informix Guid to SQL: SyntaxThe ALTER FRAGMENT operation requires exclusive access and exclusive locks on
all of the tables involved in the operation. If you enable the FORCE_DDL_EXEC
session environment option, you can force out other transactions that have opened
a table involved in an ALTER FRAGMENT ON TABLE operation, or that have
placed locks on any of those tables. If the server is unable to get exclusive access
and exclusive locks on the table, the server starts rolling back the transactions that
are open or that have locks on the table, until the value specified with the
FORCE_DDL_EXEC option is reached.
...
Рейтинг: 0 / 0
15.08.2017, 16:38
    #39505807
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Спасибо большое Павел.

Помогите пожалуйста с фрагментированием индексов. Никак не получается что-то придумать.

Есть фрагментированная таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create table paym (
id serial8,
reg_date datetime,
mod_date datetime,
param_1 varchar(50)
)
partition by expression 
partition p201206 (mod_date < datetime(2012-07-01 00:00:00) year to second ) in pm_12_6, 
partition p201207 (mod_date < datetime(2012-08-01 00:00:00) year to second ) in pm_12_7, 
partition p201208 (mod_date < datetime(2012-09-01 00:00:00) year to second ) in pm_12_8;

CREATE INDEX paym_ix_mod_date ON paym(mod_date)
PARTITION by EXPRESSION
PARTITION p201206 (mod_date < DATETIME(2012-07-01 00:00:00) YEAR TO SECOND) IN pm_12_6,
PARTITION p201207 (mod_date < DATETIME(2012-08-01 00:00:00) YEAR TO SECOND) IN pm_12_7,
PARTITION p201208 (mod_date < DATETIME(2012-09-01 00:00:00) YEAR TO SECOND) IN pm_12_8;



Как сделать, чтобы создание индексов по столбцам id , param_1 и reg_date тоже разместить в dbspace (pm_12_6 - pm_12_8), учитывая что reg_date - mod_date может быть от 0 секунд до 3 лет.
...
Рейтинг: 0 / 0
15.08.2017, 22:50
    #39505980
Вопрос про фрагментирование таблицы.
Ну так в самостоятельно пробовали ?

Создайте фрагметированную таблицу, потом индекс не по стоблцу фрагментации и посмотрите схему индекса.
...
Рейтинг: 0 / 0
25.09.2017, 15:38
    #39525857
oleg ruban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Есть программа Samrt Defrag я через нее делаю дефрагментацию
...
Рейтинг: 0 / 0
25.09.2017, 16:56
    #39525912
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Очень смешно
...
Рейтинг: 0 / 0
26.09.2017, 17:51
    #39526656
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
Может кому интересно.
Создавал таблицы с разным типом фрагментации и заливал данные около 1 млн.
1. фрагментирование по выражению + первичный ключ по двум полям
2. фрагментирование по выражению первичный ключ в отдельном dbspace
3. фрагментирование по интервалу + первичный ключ по двум полям
4. round robin

Что получилось. (размер таблицы Гб с индексами и Время заливки HH:MM:SS)
1. 14,6 39:26:10
2. 13,4 46:00:07
3. 14,1 41:48:26
4. 12,7 37:31:05

Выбрал все-таки пункт 1 (легче избавляться от старых данных. detach > выгрузка на ленту > drop)
Заливал данные в таблицу без индексов, теперь при одновременном создании (из разных сессий) индексов, получаю ошибку

-242 SQL error: Could not open database table
-106 ISAM error: non-exclusive access

Можно ли вообще создавать одновременно несколько индексов?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.07.2019, 10:10
    #39833114
aist-psk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
подскажите что не так сделал :
разбил большую таблицу по фрагментам через FRAGMENT BY ROUND ROBIN

тестовые запрос выдаёт разные значения

IDS 11.50

$ echo "select first 10 vmb_key from new_vendor_matrix_books where vmb_key < 420 " |dbaccess base

Database selected.



vmb_key

410
412
414
416
418
409
411
413
415
417

10 row(s) retrieved.



Database closed.


-----------------------------------------------
echo "select first 10 vmb_key from new_vendor_matrix_books " |dbaccess base

Database selected.



vmb_key

410
412
414
416
418
420
422
424
426
428

10 row(s) retrieved.



Database closed.

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

для FRAGMENT BY ROUND ROBIN использовал два дополнительных пространства.
во втором случае выдаёт только чётные значения
...
Рейтинг: 0 / 0
03.07.2019, 15:54
    #39833399
aist-psk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
сам разобрался , всем спасибо.
...
Рейтинг: 0 / 0
03.07.2019, 22:08
    #39833565
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
aist-pskсам разобрался , всем спасибо.Так поделитесь, в чем был прикол, пожалуйста
...
Рейтинг: 0 / 0
03.07.2019, 23:08
    #39833587
aist-psk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про фрагментирование таблицы.
запись идёт с чередованием : порция в один dbspace , другая порция в другой

выборка select first 10 - выдаёт в том порядке , что было зиписано - если дать большую выборку например 1000 :
увидим секции четных значений , потом нечётных значений.
короче это нормально.

если дать select first 10 с order by вылезет всё как положено.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Вопрос про фрагментирование таблицы. / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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