|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Добрый день, господа. Нужен совет. Есть таблица. В ней около 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.
Данная функция будет применятся к только добавленным строкам или она будет «молотить» по всей таблице. Версия 11.70.FC6 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 10:57 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Сергей Б, ИМХО если есть возможность провести адекватное нагрузочное тестирование, то его результат стоит намного больше абстрактных советов. Кроме того не забывайте про очень важный момент - расфазировка данных. Для меня например выбор круговой фрагментации был решающим из-за того что невозможно было смириться с незаполненностью одних пространств и риском получить ошибку из=за переполненности других. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 11:32 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
cpr, Спасибо за ответ. Для тестирования нет времени, да и долго очень. Недавно обсуждалась тема про оптимизации таблиц http://www.sql.ru/forum/1255054/optimizaciya-tablicy Я на тестовой среде на таком же объеме данных "зарядил" Код: plsql 1.
Месяц работало, дальше не выдержал, прибил сессию. А вот архив логов создалось на 290 Гб. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 13:13 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
"хлопотно" - почему? ведь можно создать partition в одном пространстве. Т.е. можно добавлять partition В случае перевода на фрагментирование по выражению по полю с datetime вы сразу привязываете размер фрагмента к количеству записей за указанный период. А если количество будет больше и будет превышение лимита на размер? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 13:40 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
яфшуеі, В книге Carlton Doe "IBM Informix Dynamic Server 11" автор не советует применять фрагментирование по полям с типом данных serial, data, datetime. Вот я и спрашиваю, может кто-то может опровергнуть или посоветовать обходной вариант? Код: plaintext 1. 2.
У меня все dbspace авторасширяемые. Так, что превышение лимита не будет. К тому же БД создана со страницей 16 К ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 14:36 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Сергей Бяфшуеі, У меня все dbspace авторасширяемые. Так, что превышение лимита не будет. К тому же БД создана со страницей 16 К Лимит есть всегда, для 16K страниц насколько я понимаю будет ограничение 128ГБ на размер фрагмента ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 17:32 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Если по полю даты идёт основной поток выборок для анализа, то фрагментация по нему позволит автоматически пользоваться пропуском при сканировании тех пространств где по условиям выбора данных заведомо нет. И это может быть очень большим плюсом перед round-robin. С другой стороны, сейчас у вас вставка идёт считайте в 8 раз параллельнее - конкуренция за индекс меньше в 8 раз из-за 8 пространств. При фрагментации по дате этого не будет. В зависимости от соотношения SELECT/INSERT/DELETE и глубины времени во WHERE можно сделать квартальную или даже месячную разбивку. Только не забывайте EXEC_DLL=1 для ALTER FRAGMENT при добавлении нового куска и учитыайте время работы ALTER. Впрочем при добавке куска который по диапазону заведомо не перекрывается с имеющимися требуется анализ только REMINDER. А там должно быть скорее всего пусто. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 21:20 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Яковлев Павел, Большущее спасибо!!! А что это за "зверь" EXEC_DLL . Поиск в ГУГЛе ничего не выдает. Ссылку не выложите? И еще, Вы можете прислать мне на адрес sesvjudi@yandex.ru свой e-mail. Хотелось бы пообщаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 16:03 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Это я по памяти криво написал Зверь отгоняет нафиг всех от таблицы что бы не ждать когда её изволят освободить Вот кусок из документации 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2017, 22:03 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Спасибо большое Павел. Помогите пожалуйста с фрагментированием индексов. Никак не получается что-то придумать. Есть фрагментированная таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Как сделать, чтобы создание индексов по столбцам id , param_1 и reg_date тоже разместить в dbspace (pm_12_6 - pm_12_8), учитывая что reg_date - mod_date может быть от 0 секунд до 3 лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 16:38 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Ну так в самостоятельно пробовали ? Создайте фрагметированную таблицу, потом индекс не по стоблцу фрагментации и посмотрите схему индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 22:50 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Есть программа Samrt Defrag я через нее делаю дефрагментацию ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 15:38 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Очень смешно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 16:56 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
Может кому интересно. Создавал таблицы с разным типом фрагментации и заливал данные около 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 Можно ли вообще создавать одновременно несколько индексов? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 17:51 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
подскажите что не так сделал : разбил большую таблицу по фрагментам через 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 использовал два дополнительных пространства. во втором случае выдаёт только чётные значения ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 10:10 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
сам разобрался , всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 15:54 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
aist-pskсам разобрался , всем спасибо.Так поделитесь, в чем был прикол, пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 22:08 |
|
Вопрос про фрагментирование таблицы.
|
|||
---|---|---|---|
#18+
запись идёт с чередованием : порция в один dbspace , другая порция в другой выборка select first 10 - выдаёт в том порядке , что было зиписано - если дать большую выборку например 1000 : увидим секции четных значений , потом нечётных значений. короче это нормально. если дать select first 10 с order by вылезет всё как положено. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2019, 23:08 |
|
|
Start [/forum/topic.php?fid=44&tid=1606718]: |
0ms |
get settings: |
32ms |
get forum list: |
11ms |
check forum access: |
9ms |
check topic access: |
9ms |
track hit: |
88ms |
get topic data: |
26ms |
get forum data: |
7ms |
get page messages: |
766ms |
get tp. blocked users: |
3ms |
others: | 157ms |
total: | 1108ms |
0 / 0 |