powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / No more extent в огроменной таблице
27 сообщений из 27, показаны все 2 страниц
No more extent в огроменной таблице
    #38202828
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица 71 млн записей. Не фрагментированная. Экстенты закончились. Что делать?
Прочитал FAQ .
Поменял тип таблицы на RAW. Попробывал отфрагментировать. Получил long transaction aborted .
Попробывал удалить все записи что бы потом их снова загрузить. При удалении получил ошибку no more locks

Как теперь можно уменьшить число экстентов ?
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38202842
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё попутно вопрос, что бы поменять тип таблицы на RAW нужно удалять тригеры? Я не удалял, и тип поменялся, но в документации читал что RAW таблица не может иметь тригеров.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38202934
Leonid Belov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ga,

чтобы избежать длинной транзакции, удалять можно по частям
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38202984
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ga
Прочитал FAQ .


Арт Кагель там дает три варианта - воспользуйтесь.

Причём тут RAW и размер экстента?
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203017
Фотография aist-psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выгрузить табл
удалить
заново создать с большими экстентами
загрузить табл
не забыть про индкс и тд
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203032
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203067
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ikir,

Попробывал 2 из трёх вариантов.
Тот кторый с фрагментированием у меня не получился из за того что выполнение команды
Код: sql
1.
ALTER FRAGMENT ON TABLE mytable INIT IN some_dbspace

завершилось ошибкой long transaction aborted
Поробывал тот который с выгрузкой: выгрузил в файл - всё в порядке. Начал удалять:
Код: sql
1.
DELETE FROM mytable

- команда завершилась ошибкой no more locks .
Как посоветовал Leonid Belov, попробую частями удалить. Надеюсь получится))
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203272
Вместо DELETE FROM используйте DROP TABLE и будет счастье и не будет длинной транзакции и не кончатся блокировки (что бы они не кончились при DELETE сначала залочте таблицу в эксплюзивном режиме - потратится все одна блокировка) .

Сразу при пересоздани таблицы приделайте фрагментирование и подумайте не сделать ли его с запасом на будущее.

Когда будете заново заполнять таблицу, то при наличии HDR/RSS вам НЕ надо следовать полезнейшему совету "создайте индексы после заполнения таблицы" резко повышающему скорость заполнения - логирование создания большого индекса может вызовать длинную транзакцию (зависит конечно от количества и длины полей в индексе).

При HDR/RSS cоздайте таблицу с индексами и заполняйте порциями по (10-100 тысяч).

Без HDR/RSS - создаёте таблицу без логирования, заполняете, cоздаёте индексы и переводите таблицу в логируемые.

И всё это время верьте что 71 миллионов это мало, а много это таблица которая в этом году у нас дорастёт до миллиарда строк :)
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203334
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яковлев Павел,

Так а если в одной транзакции удалять много данных она не будет длинной? Не получится ли это шило на мыло?)
Миллиард записей это конечно юбилей))
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203761
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вообще фрагментируют таблицы большие, когда в них данных много? Что бы не получить long transaction. Выгружают предварительно данные?
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203806
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ga, бардак в теории у вас...
Вы проблему уже решили или решаете?
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203827
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойga, бардак в теории у вас...
Вы проблему уже решили или решаете?
На счёт бардака - возможно. Проблему решаю.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203837
яфшуеі
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не ошибаюсь, еще на 9.21 подобную проблему(выбрали доступное место для нефрагментированной таблицы) решали так:
1. Переименовали проблемную таблицу.
2. создали пустую фрагментированную таблицу с аналогичной структурой.
3. Приаттачили старый кусок к этой таблицей
Здесь могу ошибиться - приаттачили или просто долили со старой.



Относительно приаттачить - пример(без переименований) для пустой БД такой:

create table test_1 ( id integer ) in dbs01 ;
insert into test_1 select tabid from systables ;
create table test_2 ( id integer ) fragment by expression (id > 100) in dbs02 , remainder in dbs03 ;
alter fragment on table test_2 attach test_1 as partition p1 id <=100 ;

относительно удаления всех записей - вам подсказывают пересоздать таблицу.
Есть еще чудный оператор truncate.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203870
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
truncate не во всех версиях, ТС про версию молчит.
вариантов много:
при наличии свободного места в дбспейсах:
1. бороться с лонг транзекшн путем конфигурирования сервера
или
2. воспользоваться предложением яфшуеи с аттачем

иначе выгрузка данных, удаление данных + изменение таблицы и заливка данных по новой.
при этом удаление данных через делете + альтер тейбл или через дроп+криэйт зависит от того, насколько вы со структурой бд на ты...
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38203923
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойtruncate не во всех версиях, ТС про версию молчит.
Да вы правы. Версия 10.00.UC1. Без truncate.
яфшуеі за пример спасибо.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205057
gaЯковлев Павел,

Так а если в одной транзакции удалять много данных она не будет длинной? Не получится ли это шило на мыло?)
Миллиард записей это конечно юбилей))

"много данных" не бывает. бывает их больше чем логи позволяют.

всё зависит от

- размера одной строки
- сколько строк вы удалите/добавите за раз
- количества у вас логических журналов
- размера одно логического журнала
- настроек блокировки/отката длинной транзакции
- ну и для поолноты - от настройки автодобавки журналов

длинная транзакция это, если по простому, попытка отъесть почти все логи

при достижении порога блокировки все прочие транзакции встают в наивной надежде что если не мешать длинной, то авось она таки успеет завершиться

при достижении порога отката розовая наивность покидает систему, наступает отрезвление и она начинает принудительно откатывать длинную транзакцию.

если я не ошибаюсь в понимании (в явном виде ни где не читал), откат несколько менее потребляет логи. по этому порог отката не тупо 50% а выше

если места для отката не хватило - каюк - читайте в это форуме кто как нарвался (в основно поставив один из порогов почти в 100) и чем спася

короче - всё (при нормальных настройках) завист от того сколько данных захотите вставить/удалить/изменить за раз

мы обычно делаем массовые изменения порциями по 1-10-100 тысяч - завист от настроения и фазы луны (журналов к нас 512 по 20 метров + настройка автодобавки и под неё есть место)

возможно у вас очень мало журналов и очень огромные строки, но хоть 1000 ту за раз наверно можете себе позволить

и опять-таки - не мучте систему если удаляете всё - удалите таблицу через DROP TABLE - она логируется как одно действие и занимает в журнала всего байт 100 и так же моментально выпоняется по HDR/RSS
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205065
gaКак вообще фрагментируют таблицы большие, когда в них данных много? Что бы не получить long transaction. Выгружают предварительно данные?

командой ALTER FRAGMENT :)

это намёк что всё зависит от того для чего у вас таблица и какие по ней выборки

скажем, лог кликов - изумительно фраментируется по дате клика. один год - один фрагмент.

и плюшки в виде способности оптимизатора при выборке дата >= "2012-01-01 00:00:00" сразу пропускать фраменты в которых дата ранее этого времени.

и плюшки в виде включения DATASKIP, бэкапа ненужных дбспейсов и их сноса что б место заново использовать. сильно понадобится - из бэкапа временно обратно можно прикрутить быстрее чем заново загрузкой

в конце года (скажем декабрь) добавляем дбспейсы/место под данные для нового года, добавляем фрагмент (очень рекомендую FORCE_DDL_EXEC=1) и радуемся.

если такого откровенно удобного столбца нет, то хоть по SERIAL фрагментируйте - поможет от окончания максимального количества страниц в таблице (буквально сегодня нарвались, ибо в системе упреждающего предупреждения бага была и она не оповестила что "конец близок")

и не забывайте фрагметировать индексы так же и в туда же
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205069
gaКак вообще фрагментируют таблицы большие, когда в них данных много? Что бы не получить long transaction. Выгружают предварительно данные?

что-то не про то сначала написал (как создать и поддерживать), а не как быть когда припёрло

варианты вам уже описали

- да, тупо выгрузить, дропнуть, залить в новую таблицу с уж правильной фрагментацией

- не хотите выгружать - RAW-mode и вперёд

- не хотите выгружать - добавить до фига места под логи и ALTER FRAGMENT

- не хотите выгружать - добавить до фига место под новую таблицу с правильной фрагментацией и переливать в ней. потом дропнуть старую
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205660
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще уже девелоперам из IBM пора бы исправить в новых версиях это дурацкое ограничение на кол-во страниц в таблице. Реально иногда бесит, и нормального инструмента в базе для мониторинга такой ситуации нету.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205725
яфшуеі
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndronВообще уже девелоперам из IBM пора бы исправить в новых версиях это дурацкое ограничение на кол-во страниц в таблице. Реально иногда бесит, и нормального инструмента в базе для мониторинга такой ситуации нету.

Действия в этом направлении сделаны.
Есть понятие дефрагментации, сам не пользовался - работаю по старинке.

Проблемы как таковой-то нет.
Мониторится количество екстентов, рост данных и алтерится размер следующего екстента.

Как ни крути, а нужно ослеживать размер, количество строк, количество екстентов.
1 раз написать запрос и периодисески им пользоваться.

Запрос вроде еще у тулзневене Васи был.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205756
AndronВообще уже девелоперам из IBM пора бы исправить в новых версиях это дурацкое ограничение на кол-во страниц в таблице. Реально иногда бесит, и нормального инструмента в базе для мониторинга такой ситуации нету.

не в таблице, а в фрагменте, будем всё же точнее описывать ситуацию.

(может конечно в каких-то очень старых версиях нет фрагментов...)
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38205806
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andron, автофрагментирование? :)
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38240721
SteyrLG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Была схожая ситуация таблица 400 млн записей. Экстенты автоматически будут добавляться по условию и по умолчанию (есно если место есть куда шагать). у меня была проблема ROWID за 16+ млн. Из трех известных способов выбрал - с 2к перевел на 4к.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38522393
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
интересно, а алтернуть фрагмент с выключенной журнализацией пробовали?
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38525044
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яковлев ПавелВместо DELETE FROM используйте DROP TABLE

или TRUNCATE.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38525974
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SteyrLG,

Тоже давненько наткнулся на это ограничение на некоторых таблицах, увеличил размер страницы с 4К до 8К, а также сделал для этих таблиц фрагментирование.

Ну хотя бы оповещение о приближении к ограничению (сообщения в online.log например) можно было бы прикрутить. Или в том же OAT сделать шаги в этом направлении.
...
Рейтинг: 0 / 0
No more extent в огроменной таблице
    #38585069
vvt1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andron,
да можно просто скриптик прикрутить и смотреть.
Запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT  dbinfo( "DBSPACE" , pe_partnum ) db_space, 
        dbsname db_name, 
        tabname tab_name, 
        SUM(pe_size) * 2 size_kb, 
        COUNT(pe_size) extents 
FROM    sysptnext, OUTER systabnames 
WHERE   pe_partnum = partnum 
GROUP BY 1,2,3 
ORDER BY extents DESC;
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Informix [игнор отключен] [закрыт для гостей] / No more extent в огроменной таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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