powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Медленный insert
61 сообщений из 61, показаны все 3 страниц
Медленный insert
    #39498817
Массажист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос в следующем.
Создается простая таблица, без партиций. На таблицу навешано 6 составных индексов.
СУБД Oracle 10.2.
В пустую таблицу данные с хинтом APPEND вставляются мгновенно. Со временем, когда размер таблицы вырастает, вставка данных немного замедляется.
Но вот в районе 60-70 миллионов записей в таблице скорость резко падает, 20 тыс записей может вставляться до 30 минут.
Трассировка показала что основная потеря времени приходится на файлы с индексами. Пересоздание индексов ситуацию не исправило.
Что может быть и как исправить?
...
Рейтинг: 0 / 0
Медленный insert
    #39498822
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Массажист,

Попробуйте дропнуть индексы, вставить данные, создать индексы.
...
Рейтинг: 0 / 0
Медленный insert
    #39498831
Массажист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,

Интересный подход )
...
Рейтинг: 0 / 0
Медленный insert
    #39498847
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Массажистбез партиций
Массажиств районе 60-70 миллионов записей в таблице
МассажистЧто может быть и как исправить?
Пересмотреть подход.

Если не хочется возиться с партициями - смотреть в сторону оптимизации или замены дисковой подсистемы.
На таких абстрактных показателях как количество записей и количество индексов сказать ничего толком нельзя.
...
Рейтинг: 0 / 0
Медленный insert
    #39498872
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Массажист,
уже очень давно известно, что таблицы с индексами (и ключами), особенно содержащие много записей, обновляются крайне медленно. Для примера: обновление БД при ежемесячном расчете пенсий и дотаций всех московских пенсионеров, включая инвалидов и их доверенных лиц (это 10 млн и более записей в каждой основной таблице), на самом современном оборудовании SUN Microsystems занимало несколько суток. За это время обязательно случалось какое-нибудь ЧП, и всё надо было начинать сначала. Но это было только до тех пор, пока не была применена следующая технология:
1) Делается актуальная копия БД в текущем состоянии (резервные копии и так создавались автоматически) во временную БД. Это обязательно! Прием новых данных на некоторое время прекращается, о чем оповещаются все клиентские приложения сети.
2) Во временной БД у таблиц (не всех) удаляются ключи и индексы.
3) Делается обновление данных, а иногда и удаление с последующим инсертом. Без индексных таблиц это получается на порядок быстрее!!!
4) Проводится контроль ссылочной целостности новой БД.
5) Ключи и индексы восстанавливаются специальной программой (это делается быстро).
6) Производится контроль взаимодействия ПО с новой БД.
7) В случае положительного результата рабочая БД заменяется на новую, которая становится рабочей. Перед этим бывшая рабочая база архивируется.
Такая технология обеспечивала быстрое (за несколько часов) и надежное обновление большой БД. Это было 20 лет назад, использовались СУБД Open Ingres, потом Oracle. Уверен, что сейчас появились специальные ПО (возможно, содержащееся в самих СУБД), которые все это делают (полу)автоматически, т.е. Вам не придется создавать и отрабатывать ПО в течение нескольких лет, как это делали мы, а надо будет найти соответствующий продукт и овладеть им. Я лишь попытался объяснить порядок и смысл основных шагов.
...
Рейтинг: 0 / 0
Медленный insert
    #39498887
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
In short, getting rid of indexes - loading - and then rebuilding indexes makes sense only when you are loading almost entirely new data.
If you are just adding more data to an already large segment - using /*+ APPEND */ with the indexes enabled is probably the right approach.

The way insert /*+ APPEND */ works is

a) we write table data above the high water mark (table is LOCKED, no other transaction will modify it)

b) we write indexing data for the newly inserted rows into mini-index structures in temp

c) at the end of the insert - we take these mini indexes and merge them in bulk into the existing indexes. We are done



If you drop/disable the indexes what will happen instead is

a) we write table data above the high water mark (table is LOCKED, no other transaction will modify it)

b) at the end - we will full scan the table - the entire table - the whole table - N times where N = number of indexes - to recreate them.
If you just made a large table a little larger - the time to full scan over and over defeats your goal.

тут https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1921387700346909109

Может со статистикой индексов поиграться, чтобы мерж быстрее был?
...
Рейтинг: 0 / 0
Медленный insert
    #39498897
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, с другой стороны, Oracle должен найти куда вставить ссылки на новые узлы индексов
Вопрос как он мержит
...
Рейтинг: 0 / 0
Медленный insert
    #39498900
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Массажист,
я забыл объяснить главное: почему обновление и вставка в таблицы, лишенные индексов, происходит быстрее, чем в таблицы с индексами. (Ведь что такое "индекс"? - Индексы содержатся в точно таких же таблицах, как все остальные, только таблицы индексов создаете не Вы, а СУБД, когда Вы назначаете какое-то поле Вашей таблицы индексным.) Дело в том, что при каждой операции INSERT в таблицу с индексами происходит и перестройка всех индексных таблиц, связанных с этой таблицей, а также изменение значений индексов в таблицах, связанных с ней через индексы.
Если же таблица очищена от индексов, то все обновления и добавления включаются в нее последовательно, "внавал". Это происходит так же быстро, как вставка в конец текстового файла символа или слова.
Если после всех изменений БД программа делает индексирование таблиц, то это происходит только ОДИН РАЗ, а не КАЖДЫЙ РАЗ при добавлении каждой новой записи в индексированную таблицу. В этом заключается весь смысл отключения индексов перед массовым обновлением реляционных баз данных, в том числе перед массовым добавлением записей.
...
Рейтинг: 0 / 0
Медленный insert
    #39499154
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вставка 20 тыщ. строк в таблицу с миллионами - это не такая уж и массовая операция. И что, каждый раз автору удалять и создавать индексы. Это не выход. К тому же как делать поиски пока индексов нет?
Надо копать в сторону оптимизации таблицы и дисков.
...
Рейтинг: 0 / 0
Медленный insert
    #39499156
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаврилов,

Судя по уровню разработчиков, незавидна участь московских пенсионеров...
...
Рейтинг: 0 / 0
Медленный insert
    #39499363
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Массажист, индексы битмап или битри?
ENABLE_PARALLEL_DML вруби на уровне сессии и вставляй. Особенности использования почитаешь в доке. В чем его суть? Перестройка индексов будет кучей после вставки, сама вставка будет в параллель. В плане должна появиться строчка INDEX MAINTANCE. По EM должно быть всё хорошо видно.
Как понять какой индекс тормозит? Можно трэйс наверное снимать, но есть вариант проще. Выполняешь вставку и мониторишь ash, схлопываешь её с объектами. Чем больше обращений к объекту тем больше он замедляет вставку. Но как показывает практика, наверняка есть индекс на строку. Может от него проще отказаться?
...
Рейтинг: 0 / 0
Медленный insert
    #39499377
in trace veritas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вставка записи и изменение 6 индексов это 30 блоков чтения, 10 изменений, плюс undo. Полчаса на 20000 записей - 2 мс на lio. Нужно полностью игнорировать буфер кеш, чтобы загрузить работой пару механических hdd.
...
Рейтинг: 0 / 0
Медленный insert
    #39499463
Массажист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индексы B-Tree, не битмап.
...
Рейтинг: 0 / 0
Медленный insert
    #39499499
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Массажистиндексы B-Tree, не битмап.
Делай через pdml, должен быть профит хороший.
Код: plsql
1.
2.
3.
4.
5.
 commit;
 alter session enable parallel dml;
 insert/*+ parallel(8)*/  *****
 commit;
 alter session disable parallel dml;
...
Рейтинг: 0 / 0
Медленный insert
    #39499538
Массажист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel_PV,
я попробовал через Alter session force parallel dml parallel 4
Прибавки в скорости нет.
...
Рейтинг: 0 / 0
Медленный insert
    #39499564
Фотография Aliona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Гаврилов,

Судя по уровню разработчиков, незавидна участь московских пенсионеров...

Недавно работала в одной госконторе, там практиковалась такая схема работы с данными:
пока пользовательское ПО работает с данными в схеме_1,
программисты готовят данные в схеме_2 в течение месяца.
После того, как подготовка дынных заканчивается, пользовательское ПО переключается на схему_2, а программисты - на схему_1.

Видимо это из стародавних времён идёт от царя Гороха :)
...
Рейтинг: 0 / 0
Медленный insert
    #39499598
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МассажистPavel_PV,
я попробовал через Alter session force parallel dml parallel 4
Прибавки в скорости нет.
План изменился? Index Maitenance в плане появился? Может сам запрос без параллели выполняется? Планы нужны в общем, так гадать можно долго.
...
Рейтинг: 0 / 0
Медленный insert
    #39500168
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зурбаган!
Это способ, не только проверенный на практике, но и рекомендованной в теории еще основателями реляционной модели данных и РСУБД. Так что, спорите Вы даже не со мной, а с Коддом и Дейтом. Удалять индексы и потом их восстанавливать не так уж сложно: это простые операции, для которых один раз пишутся хранимые процедуры БД. На время обновления БД блокируется на ввод/изменение данных (все равно периодически проводятся регламентные работы - ТО), т.е. SELECT юзерам доступен. Если же нет такой возможности, то рабочая база продолжает работать, а обновление делается ее резервной копии, затем производится репликация двух баз - резервной из рабочей. В любом случае обновление таблиц без индексов происходит на 2 порядка быстрее, чем с индексами, а значит, это лучше даже с учетом блокировки.
...
Рейтинг: 0 / 0
Медленный insert
    #39500210
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриловпроизводится репликацияТак может ну его нафиг вообще dml, если есть волшебная репликация.
...
Рейтинг: 0 / 0
Медленный insert
    #39500268
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Волшебной" репликации не существует, несмотря на все то, что вещали промоутеры Мелкомягкого на московских конференциях для банков - первого, кто в 90-х годах заявил на всех своих конференциях и в печати, что для MS SQL разработаны такие программы репликации структур и данных БД, а также мониторы транзакций (стоимостью для нас в то время десятки тысяч долларов, мне запомнилось число 56), которые позволяют содержать на каждом из тысяч серверов - простых ПК, разбросанных по всему миру, реплицируемые БД (т.е. крупные серверы, якобы, более не нужны, такие системы, якобы, равносильны применению машины Super Cray с ее локальной сетью!). Уже давно этот искусственно раздутый для России рынок (базар) попритих, но пароксизмы "монитора транзакций" по-прежнему возникают время от времени. Правда, цены стали почему-то гораздо ниже.
На самом деле, при более пристальном рассмотрении, репликации оказались разными. Оказалось, что они зависят от требований конкретной информационной системы (ИС), и фактически всегда можно не учитывать все случаи жизни. Программы для репликаций могут быть совсем не сложными, не сложнее самих функций удаленного доступа, которые применяются при осуществлении репликации и которые сегодня поддерживаются всеми средствами разработки, в частности, MS Visual Studio (от общих для всех тенденций времени Майкрософту тоже уйти не удалось).
Получается так, что механизм репликаций, прежде чем применять, надо разработать и отработать прикладным и системным программистам вместе. Главное хорошо продумать технологию сеанса репликации: что надо делать и в какой последовательности. Это непросто: надо создать очень грамотную постановку задачи, а это сейчас далеко не все могут (потому что плохо знают предметную область, да и некому им ее изложить), и поэтому сегодня репликация, по моим наблюдениям, применяется редко (систематически - только на Дальнем Западе несколькими фирмами, наверняка порожденными самим MS). Чаще создается еще одна копия БД, в ней производятся изменения, затем производится замена баз, как я и описал. А так как аппаратная часть всех необходимых обеспечений (те, кто хоть мельком знакомы с теорией IT, сразу поняли, какой список "обеспечений" я имею в виду) стала намного производительнее, чем была, то замена происходит быстро. Однако не все так просто, как хотелось бы, и нескоро будет просто.
PS
Особенно не скоро, пока существуют флудеры и тролли, который хлебом не корми, но дай поиздеваться над "пенсионерами". Если бы в 90-х, когда они еще только что появились на свет или в лучшем случае уже кушали свои козявки, не затормозили (насильственно, под влиянием наших собственных либеральных демократов, ну и не без западных долларей, конечно) развитие науки и промышленности России и отделившихся "стран", и вместе с этим не похерили бы естественную преемственность поколений , то сегодня не пришлось вам, многим и многим программерам - нашим прямым потомкам - задавать подобные детские вопросы и миллионы раз изобретать все тот же самый велосипед в каждой отдельно взятой коммерческой организации, прикрываясь локтями от всех других подобных же программеров.
...
Рейтинг: 0 / 0
Медленный insert
    #39500278
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS?
Какое отношение технологии БД MS имеют отношение к технологиям Oracle?
Ну а в целом, подход для блокировщиков - удалить индексы/загрузить/создать - работает быстрее
Для Oracle - это подходит для продукта Oracle RDB (бывшая RDB от фирмы DEC)
А для того Oracle, который все обычно имеют ввиду, я выдержку давал, как происходит
добавление данных и построение индексов для них с последующим мержем
...
Рейтинг: 0 / 0
Медленный insert
    #39500279
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс!
Только бы тему не закрыли.
...
Рейтинг: 0 / 0
Медленный insert
    #39500286
Фотография Ranckont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МассажистЧто может быть и как исправить?посмотреть в сторону sqlloader.
Есть-ли в таблицах последовательности?
...
Рейтинг: 0 / 0
Медленный insert
    #39500290
Фотография Ranckont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увеличьте размер файла для индексов.
...
Рейтинг: 0 / 0
Медленный insert
    #39500303
Enlarge your index
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем меньше подробностей, тем больше экспертов.
...
Рейтинг: 0 / 0
Медленный insert
    #39500344
хм... хм...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel_PV,

как по вашему индексы в parallel будут обновляться? И за счет чего там может получиться прирост в скорости?
...
Рейтинг: 0 / 0
Медленный insert
    #39500463
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
landy, SQL есть SQL. В любой среде интерпретатор этого языка написан в конце концов на С, а C есть C. Не надо противопоставлять одну фирму другой! Если бы они были настолько разными по своим возможностям, то какой-то из них уже давно бы не было.
...
Рейтинг: 0 / 0
Медленный insert
    #39500491
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
landy, извините, но еще одно и существенное.
Вы упомянули DEC/Rdb. В данном случае SQL ни при чем.
СУБД Rdb я использовал на VAXах еще до того, как там утвердился SQL. Запросы к БД выполнялись на собственном языке DEC под названием RDO. Это было что-то похожее на применение курсоров в SQL. Результаты каждой итерации можно было отслеживать и реагировать на них любым языком, поддерживаемым DEC (например, языком, очень похожим на FORTRAN-66, но намного более мощным, со всеми элементами "С с классами", которого еще не было в употреблении). В частности, можно было только указать в начале файла таблицу - и RDO в том же файле автоматически создавал структуру, полностью соответствующую этой таблице, и с изменением таблицы БД эта структура автоматически изменялась при перекомпиляции. Оставалось только написать код, обрабатывающий данные в хост-программе. Замечу для ясности, что никакой другой язык в то время не поддерживал структуры из разнотипных данных и, соответственно, не было самого понятия "структура". RDO работал намного быстрее, чем внедренный затем SQL с той же самой СУБД Rdb. На VAXах, когда остальные многочисленные пользователи из-за загрузки машины даже не могли ввести текст со своих клав на свои же терминалы, программы с RDO срабатывали моментально. Для запросов RDO использовалась атавистическая шина, оставшаяся с первых версий PDP, которая не использовалась никакими другими процессами. Спецы, перекупленные Ораклом у Digital Equipment Corporation, не могли использовать эту шину в другой инфраструктуре, ее там не было. Поэтому скорострельность СУБД DEC/Rdb до сих пор остается непревзойденной. (Просто информация из истории IT)
...
Рейтинг: 0 / 0
Медленный insert
    #39500495
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриловнаписан в конце концов на Сфвмас и стебелек на паскале.
...
Рейтинг: 0 / 0
Медленный insert
    #39500502
ura1y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриловlandy, SQL есть SQL. В любой среде интерпретатор этого языка написан в конце концов на С, а C есть C. Не надо противопоставлять одну фирму другой! Если бы они были настолько разными по своим возможностям, то какой-то из них уже давно бы не было.
Надеюсь тут все получится, и что-то изменится
...
Рейтинг: 0 / 0
Медленный insert
    #39500504
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ura1y,
Я очень хочу, чтобы всё получилось - но ведь знаю наперед, что не получится. О чем и сердце болит. А ведь мы, пенсионеры, давно know how.
...
Рейтинг: 0 / 0
Медленный insert
    #39500526
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-, Да ты только флудер, блин! А я тебя до сих пор считал.
...
Рейтинг: 0 / 0
Медленный insert
    #39500534
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL есть SQL. В любой среде интерпретатор этого языка написан в конце концов на С, а C есть C
При чем тут реализация интерпретатора SQL?

Имеем горшочки разных размеров и разных систем(угольный, электрический, атомный)
Вы говорите - Горшочек вари/не вари/налей кипятку(суть SQL)
При этом реализация механизмов кипячения/отключения/открытия кранов в горшочках разная. И методы повышения
скорости приготовления кипятка/выключения/налива - зависят от того в каком горшочке вы его готовите
Вы же говорите, что все горшочки одинаковые, т к выполняют вари/не вари/налей

Собственно это я и хотел донести, что при использовании разных горшjчков методы будут различаться.
Вы же не будете тушить электрический или атомный гршочек водой, чтобы их выключить?
Хотя это возможно, вопрос насколько эффективно и безопасно
...
Рейтинг: 0 / 0
Медленный insert
    #39500543
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грешно смеяться над больным человеком.
По делу - выдать подробности про IO систему, количество дисков, конфиг. ASM или файловая система? Проверить, что нет какого-нибудь авторасширения, и место под новые данные есть. Скорее всего проблема где-то здесь.
Вам же расписали алгоритм вставки с append. Единственный шаг, зависящий от размера таблицы, это слияние индексов. У вас хватает памяти для этого, в своп не сваливаетесь?
...
Рейтинг: 0 / 0
Медленный insert
    #39500575
ст.ебелёк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГавриловДа ты только флудерТвой почерк уж очень напоминает автора
...
Рейтинг: 0 / 0
Медленный insert
    #39500618
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ст.ебелёк, кончай стебаться!
А вообще-то, давно уже всем всё ясно - и что делать задавшему вопрос автору темы, и всем прочим.
Тему пора закрывать, а то уже, как в плохих блогах без строгого модератора, дело пошло на личности. Я могу, конечно, выражаться в этом стиле, и даже круче других (морская закалка), но не хочу больше, надоело.
...
Рейтинг: 0 / 0
Медленный insert
    #39500620
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
landy, интерпретатор SQL вот при чем, если Вы не поняли этого до сих пор, вроде как бы программируя на SQL. Во время трансляции любой программы, в том числе и созданной в редакторе SQL, предоставляемом любой из фирм, в любом случае Ваша SQL-программа (запрос) тоже транслируется в исполнимый код. Но SQL надо сначала перевести (транслировать) в тот код, который понимает компилятор основного языка программирования. Это называтся прекомпиляция . Только не пишите мне, что Вы этого не знали. А если знали, тогда ваши возражения - именно флуд, и не более того.
...
Рейтинг: 0 / 0
Медленный insert
    #39500625
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы мыслите только одним типом INSERT
А в Oracle возможны варианты

INSERT ...
и
INSERT /*APPEND*/ ...

А теперь внимательно почитайте ссылку, которую я приводил
...
Рейтинг: 0 / 0
Медленный insert
    #39500653
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриловlandy, интерпретатор SQL вот при чем, если Вы не поняли этого до сих пор, вроде как бы программируя на SQL. Во время трансляции любой программы, в том числе и созданной в редакторе SQL, предоставляемом любой из фирм, в любом случае Ваша SQL-программа (запрос) тоже транслируется в исполнимый код. Но SQL надо сначала перевести (транслировать) в тот код, который понимает компилятор основного языка программирования. Это называтся прекомпиляция . Только не пишите мне, что Вы этого не знали. А если знали, тогда ваши возражения - именно флуд, и не более того.

Я очень извиняюсь, но запрос SQL не транслируется в "основной язык программирования". Совсем.
...
Рейтинг: 0 / 0
Медленный insert
    #39500662
Bfink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyINSERT /*APPEND*/ ...
А что такое - INSERT /*APPEND*/ ?

Может быть INSERT /*FAST*/ ?
...
Рейтинг: 0 / 0
Медленный insert
    #39500879
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут,например,
https://docs.oracle.com/cd/B12037_01/server.101/b10752/hintsref.htm
Что за хинт FAST?
...
Рейтинг: 0 / 0
Медленный insert
    #39500882
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyТут,например,
https://docs.oracle.com/cd/B12037_01/server.101/b10752/hintsref.htm
Что за хинт FAST?Я не вижу никаких хинтов.
...
Рейтинг: 0 / 0
Медленный insert
    #39500891
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
APPEND

The APPEND hint lets you enable direct-path INSERT if your database is running in serial mode. 
Your database is in serial mode if you are not using Enterprise Edition. 
Conventional INSERT is the default in serial mode, and direct-path INSERT is the default in parallel mode.

In direct-path INSERT, data is appended to the end of the table, rather than using existing space currently allocated to the table. 
As a result, direct-path INSERT can be considerably faster than conventional INSERT.

/*+ APPEND */



Трудно загуглить ?

https://iusoltsev.wordpress.com/profile/individual-sql-and-cbo/cbo-hints/#APPEND
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
/*+ APPEND */
/*+ NOAPPEND*/

«Подсказка APPEND форсирует использование оптимизатором direct-path INSERT в запросах вида INSERT INTO… SELECT …

        Традиционный (conventional) метод вставки в таблицу используется по умолчанию (без хинтов) в режиме 
непараллельной вставки. В этом режиме direct path INSERT может быть использован только при использовании подсказки APPEND.
        Direct-path INSERT используется по умолчанию в режиме параллельной вставки [работает при выполнении след.условий:

                Oracle Enterprise Edition

                ALTER SESSION { ENABLE | FORCE } PARALLEL DML;

                установленный признак параллельности (USER_TABLES.DEGREE) для целевой таблицы на этапе 
создания/модификации (CREATE|ALTER TABLE…PARALLEL n)

            или подсказкой PARALLEL во время выполнения DML

            или параметером PARALLEL_DEGREE_POLICY = AUTO (11.2+)]

    В этом случае традиционный (conventional) метод вставки строк в таблицу будет применяться только при использовании подсказки NOAPPEND.

… При использовании direct-path INSERT, данные добавляются в конец таблицы [добавляя новые блоки и повышая High Water Mark (HWM)], 
вместо того, чтобы использовать свободное место в уже выделенных блоках таблицы. В результате direct-path INSERT может быть 
значительно быстрее традиционной (conventional) операции вставки»

Особенности использования подсказки APPEND в запросах вида INSERT INTO … VALUES, см. APPEND Hint (Direct-Path) Insert 
with Values Causes Excessive Space Usage on 11G [ID 842374.1]:

1. В версиях 10g, 10g R2, подсказка APPEND игнорируется

2. В 11g R1, хинт APPEND запускает режим direct-path insert даже в случае использования INSERT INTO … VALUES. 
Поведение аналогично использованию подсказки APPEND_VALUES в версиях, начиная с 11g R2.

3. Начиная с версии 11g R2, появляется новая подсказка APPEND_VALUES, позволяя т.о использовать механизм direct path load 
только в случае использования APPEND_VALUES. Подсказка APPEND игнорируется для предложений типа INSERT … VALUES…

Рекомендуется использовать хинт APPEND (режим прямой вставки) для загрузки больших объёмов данных, а не для вставки 
одиночных строк, т.к. в последнем случае не будет получено преимуществ
...
...
Рейтинг: 0 / 0
Медленный insert
    #39500943
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landy,

Чудак, сравни, что пишут в доке, со своими комментариями и снимись с ручника.
...
Рейтинг: 0 / 0
Медленный insert
    #39500989
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eliclandy,

Чудак, сравни, что пишут в доке, со своими комментариями и снимись с ручника.

На заборе слово написано, бабка обрадовалась, а потом все руки в занозах ...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
select version from v$instance;
VERSION    
 ---------- 
 10.2.0.4.0 

create table t1(
id number,
value varchar2(256));
insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=2048;

DBMS_OUTPUT:
 ------------
 
 2048 record(s) affected 

 [Executed: 8/6/2017 6:41:13 PM] [Execution: 21ms] 

select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE';

DBMS_OUTPUT:
 ------------

 EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         

 5 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 0ms] 

 [Executed: 8/6/2017 6:42:08 PM] [Execution: 21ms] 



Имеем 5 сегментов под таблицу
удалим часть данных и опять вставим

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
delete from t1 where id<=1024;

1024 record(s) affected 
 [Executed: 8/6/2017 6:44:15 PM] [Execution: 40ms] 

select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE';

 DBMS_OUTPUT:
 ------------
 EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         

 5 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 0ms] 

 [Executed: 8/6/2017 6:45:59 PM] [Execution: 20ms] 
insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;

DBMS_OUTPUT:
 ------------
 1024 record(s) affected 

 [Executed: 8/6/2017 6:46:52 PM] [Execution: 162ms] 
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
DBMS_OUTPUT:
 ------------
  EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         

 5 record(s) selected [Fetch MetaData: 1ms] [Fetch Data: 0ms] 

 [Executed: 8/6/2017 6:47:52 PM] [Execution: 22ms] 


Как видим, число сегментов не изменилось - данные вставились в пустые страницы.
Теперь удалим часть данных и опять вставим с хинтом APPEND
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
delete from t1 where id<=1024;
DBMS_OUTPUT:
 ------------
 
1024 record(s) affected 

 [Executed: 8/6/2017 6:49:42 PM] [Execution: 105ms] 
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
 DBMS_OUTPUT:
 ------------
 

 EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         

 5 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 1ms] 

 [Executed: 8/6/2017 6:50:27 PM] [Execution: 26ms] 
insert /*+ APPEND*/ into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
DBMS_OUTPUT:
 ------------

 1024 record(s) affected 

 [Executed: 8/6/2017 6:51:08 PM] [Execution: 50ms] 

select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
DBMS_OUTPUT:
 ------------
 
 EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         
 5             65536     8         
 6             65536     8         

 7 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 1ms] 

 [Executed: 8/6/2017 6:51:53 PM] [Execution: 21ms]


Мирикал - добавились новые сегменты - суть пустые страницы не искались, а данные добавились в "конец"
Так что не нужно газовать, берем словарь и читаем, что в оригинале
или проверяем
...
Рейтинг: 0 / 0
Медленный insert
    #39500992
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно просто удалить все данные из t1, и посмотреть число сегментов под таблицу
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
delete from t1;
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;

DBMS_OUTPUT:
 ------------
  EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         
 5             65536     8         
 6             65536     8         

 7 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 1ms] 

 [Executed: 8/6/2017 6:51:53 PM] [Execution: 21ms]



и теперь вставить данные с хинтом APPEND
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
insert /*+ APPEND*/ into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;

DBMS_OUTPUT:
 ------------

 1024 record(s) affected 

 [Executed: 8/6/2017 7:12:46 PM] [Execution: 61ms] 
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
DBMS_OUTPUT:
 ------------
  EXTENT_ID     BYTES     BLOCKS    
 ------------  --------  --------- 
 0             65536     8         
 1             65536     8         
 2             65536     8         
 3             65536     8         
 4             65536     8         
 5             65536     8         
 6             65536     8         
 7             65536     8         
 8             65536     8         
 9             65536     8         

 10 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 1ms] 

 [Executed: 8/6/2017 7:13:47 PM] [Execution: 21ms] 



Видим, что все равно аллокируются новые сегменты - старые не используются
...
Рейтинг: 0 / 0
Медленный insert
    #39500993
Bfink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landy,

Для кого этот ликбез?
TC в первом сообщении так и написал что insert именно такой.
Вопрос же в том - что происходит с индексами?
Кстати, можете попробовать в Вашем примере выполнить два инсерта подряд, не делая commit между ними.
В какие блоки попадут записи второго инсерта?
...
Рейтинг: 0 / 0
Медленный insert
    #39500998
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для Elic
...
Рейтинг: 0 / 0
Медленный insert
    #39501000
landy,

Я лично понял так: Bfink, нехороший человек, решил докопаться ,что у тебя в сообщении не было знака +.
Elic пытался намекнуть об этом же.
...
Рейтинг: 0 / 0
Медленный insert
    #39501004
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот результат - два инсерта и общий commit
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
SQL> drop table t1;
create table t1(
id number,
value varchar2(256));
Table dropped.

SQL>   2    3  

Table created.

SQL> 
SQL> insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
commit;
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
1024 rows created.

SQL> 
1024 rows created.

SQL> 
Commit complete.

SQL>   2    3    4  

 EXTENT_ID	BYTES	  BLOCKS
---------- ---------- ----------
	 0	65536	       8
	 1	65536	       8
	 2	65536	       8
	 3	65536	       8
	 4	65536	       8

SQL> delete from t1;
commit;
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
2048 rows deleted.

SQL> 
Commit complete.

SQL>   2    3    4  

 EXTENT_ID	BYTES	  BLOCKS
---------- ---------- ----------
	 0	65536	       8
	 1	65536	       8
	 2	65536	       8
	 3	65536	       8
	 4	65536	       8

SQL> insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
commit;
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
1024 rows created.

SQL> 
1024 rows created.

SQL> 
Commit complete.

SQL>   2    3    4  

 EXTENT_ID	BYTES	  BLOCKS
---------- ---------- ----------
	 0	65536	       8
	 1	65536	       8
	 2	65536	       8
	 3	65536	       8
	 4	65536	       8

SQL> delete from t1;
commit;
insert /*+ APPEND*/ into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
commit;
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;
2048 rows deleted.

SQL> 
Commit complete.

SQL> 
1024 rows created.

SQL> 
Commit complete.

SQL>   2    3    4  

 EXTENT_ID	BYTES	  BLOCKS
---------- ---------- ----------
	 0	65536	       8
	 1	65536	       8
	 2	65536	       8
	 3	65536	       8
	 4	65536	       8
	 5	65536	       8
	 6	65536	       8

7 rows selected.

SQL> delete from t1;
commit;
insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
insert into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
commit;
select extent_id, bytes, blocks
 from user_extents
 where segment_name = 'T1'
 and segment_type = 'TABLE' ;

1024 rows deleted.

SQL> 
Commit complete.

SQL> 
1024 rows created.

SQL> 
1024 rows created.

SQL> 
Commit complete.

SQL>   2    3    4  
 EXTENT_ID	BYTES	  BLOCKS
---------- ---------- ----------
	 0	65536	       8
	 1	65536	       8
	 2	65536	       8
	 3	65536	       8
	 4	65536	       8
	 5	65536	       8
	 6	65536	       8

7 rows selected.

SQL> 
...
Рейтинг: 0 / 0
Медленный insert
    #39501008
Bfink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landy,

Нет :-) два инсерта с хинтом APPEND подряд без commit-а между ними.
Это явно вам покажет, что проблема не в отведении только новых сегментов.

А индексам явно становится все хуже и хуже при последовательных инсертах с хинтом APPEND (естественно с commit-ами между ними).
И в чем тут проблема хотелось бы понять.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table tmp_tmp (a number, b number);
create index tmp_tmp_1 on tmp_tmp (a);
create index tmp_tmp_2 on tmp_tmp (b);
create index tmp_tmp_3 on tmp_tmp (a,b);

insert /*+ append */ into tmp_tmp select level,level+1  from dual  connect by level<10000000
commit;
insert /*+ append */ into tmp_tmp select level,level+1  from dual  connect by level<10000000
commit;
...
Рейтинг: 0 / 0
Медленный insert
    #39501009
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они не выполнятся
Код: plsql
1.
2.
3.
4.
5.
SQL> insert /*+ APPEND*/ into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024;
insert /*+ APPEND*/ into t1 (id,value) select rownum, 'sdfghsjdfhgjhsdfhg34kjhkjHKJhjролр ЛОРОРОЛРОЛРОР jkhhjhjhHJHJHJHJHKJH jhjhjh 338458376873 kjkjkjkjk 090sdf9gng45n' from dual connect by rownum<=1024
*
ERROR at line 1:
ORA-12838: cannot read/modify an object after modifying it in parallel
...
Рейтинг: 0 / 0
Медленный insert
    #39501010
Bfink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landy,

Про что и говорю - insert с хинтом APPEND - это не просто использование новых сегментов и не просто аналог direct load sqlloader-а.
Кстати, у лоадера, кажется при direct_load индексы отключались, а потом перестраивались.
...
Рейтинг: 0 / 0
Медленный insert
    #39501055
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bfinklandy,

Для кого этот ликбез?

landyдля Elic
Я дожил до момента, когда на этом форуме начали проводить ликбез для Elic'а!

ЗЫ. Однозначно пора заводить раздел форума "Просто посмеяться", ибо отдельные сообщения из этой темы не передадут весь колорит...
...
Рейтинг: 0 / 0
Медленный insert
    #39501059
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как я понял Elic указал вот на это
Код: plsql
1.
1. В версиях 10g, 10g R2, подсказка APPEND игнорируется


а не на "+"
...
Рейтинг: 0 / 0
Медленный insert
    #39501066
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bfink,

Если верить Тому, то вставка с APPEND выглядит так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
The way insert /*+ APPEND */ works is

a) we write table data above the high water mark (table is LOCKED, no other transaction will modify it)

b) we write indexing data for the newly inserted rows into mini-index structures in temp

c) at the end of the insert - we take these mini indexes and merge them in bulk into the existing indexes. We are done



ИМХО, для примера с добавлением 10000000 записей получается не сильно хорошая идея, легче наверное
дропнуть индексы, добавить записи и пересоздать.
По поводу проблемы у ТС, при добавлении 20000 записей к 70 млн это должно быть быстрее.
Но замедление скорости мержа индексов , как я понимаю работу btree, скорее всего связано
с просмотром блоков в листе(он ведь двусвязанный список?), для того чтобы добавить данные в конец списка.
Т е возможно большое количество не уникальных записей
Но , как тут уже говорили, деталей от ТС нет
...
Рейтинг: 0 / 0
Медленный insert
    #39501100
Фотография kinky cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно глянуть для интереса
select num_rows, distinct_keys, blevel, leaf_blocks, distinct_keys/leaf_blocks
from user_indexes where index_name = ....
до инсерта, после инсерта. Стату только не забудьте собрать. Ну и сырой трейс может что то подсказать, с чем он там так ковыряется.
Вдруг что то с параметрами хранения можно подкрутить. А так да, мало данных, что б что то конкретное подсказать.
...
Рейтинг: 0 / 0
Медленный insert
    #39501517
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landyНу как я понял Elic указал вот на это
Код: plsql
1.
1. В версиях 10g, 10g R2, подсказка APPEND игнорируется



а не на "+"Посмотри на свои сообщения до того, как встряли бфинк и я. И не занимайся метанием бисера.
...
Рейтинг: 0 / 0
Медленный insert
    #39501520
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schi,
Вы куда-то отъехали от физической действительности или вооще не в курсе? А на каких, по-вашему, языках программируются программы вообще и компиляторы в частности, если они написаны не на языках ассемблеров, не на С (в основном!) и всех прочих известных языках программирования, которых уже известно более 1600 только зарегистрированных, т.е. не повторяющих другие. Компиляторы (программы-трансляторы), дорогой товарищ,- это такие программы , чтоб Вы так знали, и они написаны каким-то одним человеком относительно разумным (<здесь системой не переведено с греческого> - а дословно: человек не окончательно умный ), но не получены нами откуда-то свыше.
Если Вы часто и много смотрите ТВ3 или РенТВ - кончайте это делать срочно! Если этого не сделаете, станете таким же "не окончательно" разумными, как добивающийся только рейтинга и гонораров автор якобы ежедневных, но мнлого раз повторяющихся ТВ-передач, а также прилагающихся к тем же TV-передачам его же "книгам"-нетленкам. Я конкретно имею в виду каждый день с утра до вечера юродствующего ("слишком выступающего", как назвали бы мы в 60-х годах) перед камерой Игоря Прокопенко и многих, многих ДР акул и карасей камеры (могу назвать, но это будет длинный список). А хорошо бы их всех хоть на месяц засадить в камеру настоящую - для релиза! Разве нет?
Вторая часть напрямую к Вам не относится, SCHi, но сравнивать и при этом думать никогда не вредно.
...
Рейтинг: 0 / 0
Медленный insert
    #39501528
Гаврилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот новость-то! Слава Господу Богу, кто-то наконец где-то прочитал, что существует в языке SQL INSERT-
UPDAТЕ. Может быть, лет через 300 кто-то вспомнит, что и SELECT/UPDATE тоже когда-то существовал. При нем было как-то проще и уютней. Это только с недавних пор неучам приходится доказывать, что 2 x 2 + 2 = 8, а не 6.
...
Рейтинг: 0 / 0
Медленный insert
    #39501536
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаврилов,

Вы, как пердун, не понимаете и, более того, не выдерживаете формат форума. Может стоит продолжить времяпровождение там, где и предыдущие десятилетия?!
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Медленный insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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