|
|
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Вопрос в следующем. Создается простая таблица, без партиций. На таблицу навешано 6 составных индексов. СУБД Oracle 10.2. В пустую таблицу данные с хинтом APPEND вставляются мгновенно. Со временем, когда размер таблицы вырастает, вставка данных немного замедляется. Но вот в районе 60-70 миллионов записей в таблице скорость резко падает, 20 тыс записей может вставляться до 30 минут. Трассировка показала что основная потеря времени приходится на файлы с индексами. Пересоздание индексов ситуацию не исправило. Что может быть и как исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 09:56 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Массажист, Попробуйте дропнуть индексы, вставить данные, создать индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 10:01 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Интересный подход ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 10:11 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Массажистбез партиций Массажиств районе 60-70 миллионов записей в таблице МассажистЧто может быть и как исправить? Пересмотреть подход. Если не хочется возиться с партициями - смотреть в сторону оптимизации или замены дисковой подсистемы. На таких абстрактных показателях как количество записей и количество индексов сказать ничего толком нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 10:41 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Массажист, уже очень давно известно, что таблицы с индексами (и ключами), особенно содержащие много записей, обновляются крайне медленно. Для примера: обновление БД при ежемесячном расчете пенсий и дотаций всех московских пенсионеров, включая инвалидов и их доверенных лиц (это 10 млн и более записей в каждой основной таблице), на самом современном оборудовании SUN Microsystems занимало несколько суток. За это время обязательно случалось какое-нибудь ЧП, и всё надо было начинать сначала. Но это было только до тех пор, пока не была применена следующая технология: 1) Делается актуальная копия БД в текущем состоянии (резервные копии и так создавались автоматически) во временную БД. Это обязательно! Прием новых данных на некоторое время прекращается, о чем оповещаются все клиентские приложения сети. 2) Во временной БД у таблиц (не всех) удаляются ключи и индексы. 3) Делается обновление данных, а иногда и удаление с последующим инсертом. Без индексных таблиц это получается на порядок быстрее!!! 4) Проводится контроль ссылочной целостности новой БД. 5) Ключи и индексы восстанавливаются специальной программой (это делается быстро). 6) Производится контроль взаимодействия ПО с новой БД. 7) В случае положительного результата рабочая БД заменяется на новую, которая становится рабочей. Перед этим бывшая рабочая база архивируется. Такая технология обеспечивала быстрое (за несколько часов) и надежное обновление большой БД. Это было 20 лет назад, использовались СУБД Open Ingres, потом Oracle. Уверен, что сейчас появились специальные ПО (возможно, содержащееся в самих СУБД), которые все это делают (полу)автоматически, т.е. Вам не придется создавать и отрабатывать ПО в течение нескольких лет, как это делали мы, а надо будет найти соответствующий продукт и овладеть им. Я лишь попытался объяснить порядок и смысл основных шагов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:11 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
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 Может со статистикой индексов поиграться, чтобы мерж быстрее был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:31 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Хотя, с другой стороны, Oracle должен найти куда вставить ссылки на новые узлы индексов Вопрос как он мержит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:36 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Массажист, я забыл объяснить главное: почему обновление и вставка в таблицы, лишенные индексов, происходит быстрее, чем в таблицы с индексами. (Ведь что такое "индекс"? - Индексы содержатся в точно таких же таблицах, как все остальные, только таблицы индексов создаете не Вы, а СУБД, когда Вы назначаете какое-то поле Вашей таблицы индексным.) Дело в том, что при каждой операции INSERT в таблицу с индексами происходит и перестройка всех индексных таблиц, связанных с этой таблицей, а также изменение значений индексов в таблицах, связанных с ней через индексы. Если же таблица очищена от индексов, то все обновления и добавления включаются в нее последовательно, "внавал". Это происходит так же быстро, как вставка в конец текстового файла символа или слова. Если после всех изменений БД программа делает индексирование таблиц, то это происходит только ОДИН РАЗ, а не КАЖДЫЙ РАЗ при добавлении каждой новой записи в индексированную таблицу. В этом заключается весь смысл отключения индексов перед массовым обновлением реляционных баз данных, в том числе перед массовым добавлением записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:38 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Вставка 20 тыщ. строк в таблицу с миллионами - это не такая уж и массовая операция. И что, каждый раз автору удалять и создавать индексы. Это не выход. К тому же как делать поиски пока индексов нет? Надо копать в сторону оптимизации таблицы и дисков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 16:41 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Гаврилов, Судя по уровню разработчиков, незавидна участь московских пенсионеров... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 16:47 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Массажист, индексы битмап или битри? ENABLE_PARALLEL_DML вруби на уровне сессии и вставляй. Особенности использования почитаешь в доке. В чем его суть? Перестройка индексов будет кучей после вставки, сама вставка будет в параллель. В плане должна появиться строчка INDEX MAINTANCE. По EM должно быть всё хорошо видно. Как понять какой индекс тормозит? Можно трэйс наверное снимать, но есть вариант проще. Выполняешь вставку и мониторишь ash, схлопываешь её с объектами. Чем больше обращений к объекту тем больше он замедляет вставку. Но как показывает практика, наверняка есть индекс на строку. Может от него проще отказаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 04:25 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Вставка записи и изменение 6 индексов это 30 блоков чтения, 10 изменений, плюс undo. Полчаса на 20000 записей - 2 мс на lio. Нужно полностью игнорировать буфер кеш, чтобы загрузить работой пару механических hdd. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 07:11 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
индексы B-Tree, не битмап. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 09:41 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Массажистиндексы B-Tree, не битмап. Делай через pdml, должен быть профит хороший. Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 10:26 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Pavel_PV, я попробовал через Alter session force parallel dml parallel 4 Прибавки в скорости нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 11:00 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
AlexFF__|Гаврилов, Судя по уровню разработчиков, незавидна участь московских пенсионеров... Недавно работала в одной госконторе, там практиковалась такая схема работы с данными: пока пользовательское ПО работает с данными в схеме_1, программисты готовят данные в схеме_2 в течение месяца. После того, как подготовка дынных заканчивается, пользовательское ПО переключается на схему_2, а программисты - на схему_1. Видимо это из стародавних времён идёт от царя Гороха :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 11:30 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
МассажистPavel_PV, я попробовал через Alter session force parallel dml parallel 4 Прибавки в скорости нет. План изменился? Index Maitenance в плане появился? Может сам запрос без параллели выполняется? Планы нужны в общем, так гадать можно долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 12:11 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Зурбаган! Это способ, не только проверенный на практике, но и рекомендованной в теории еще основателями реляционной модели данных и РСУБД. Так что, спорите Вы даже не со мной, а с Коддом и Дейтом. Удалять индексы и потом их восстанавливать не так уж сложно: это простые операции, для которых один раз пишутся хранимые процедуры БД. На время обновления БД блокируется на ввод/изменение данных (все равно периодически проводятся регламентные работы - ТО), т.е. SELECT юзерам доступен. Если же нет такой возможности, то рабочая база продолжает работать, а обновление делается ее резервной копии, затем производится репликация двух баз - резервной из рабочей. В любом случае обновление таблиц без индексов происходит на 2 порядка быстрее, чем с индексами, а значит, это лучше даже с учетом блокировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 10:58 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Гавриловпроизводится репликацияТак может ну его нафиг вообще dml, если есть волшебная репликация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 11:50 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
"Волшебной" репликации не существует, несмотря на все то, что вещали промоутеры Мелкомягкого на московских конференциях для банков - первого, кто в 90-х годах заявил на всех своих конференциях и в печати, что для MS SQL разработаны такие программы репликации структур и данных БД, а также мониторы транзакций (стоимостью для нас в то время десятки тысяч долларов, мне запомнилось число 56), которые позволяют содержать на каждом из тысяч серверов - простых ПК, разбросанных по всему миру, реплицируемые БД (т.е. крупные серверы, якобы, более не нужны, такие системы, якобы, равносильны применению машины Super Cray с ее локальной сетью!). Уже давно этот искусственно раздутый для России рынок (базар) попритих, но пароксизмы "монитора транзакций" по-прежнему возникают время от времени. Правда, цены стали почему-то гораздо ниже. На самом деле, при более пристальном рассмотрении, репликации оказались разными. Оказалось, что они зависят от требований конкретной информационной системы (ИС), и фактически всегда можно не учитывать все случаи жизни. Программы для репликаций могут быть совсем не сложными, не сложнее самих функций удаленного доступа, которые применяются при осуществлении репликации и которые сегодня поддерживаются всеми средствами разработки, в частности, MS Visual Studio (от общих для всех тенденций времени Майкрософту тоже уйти не удалось). Получается так, что механизм репликаций, прежде чем применять, надо разработать и отработать прикладным и системным программистам вместе. Главное хорошо продумать технологию сеанса репликации: что надо делать и в какой последовательности. Это непросто: надо создать очень грамотную постановку задачи, а это сейчас далеко не все могут (потому что плохо знают предметную область, да и некому им ее изложить), и поэтому сегодня репликация, по моим наблюдениям, применяется редко (систематически - только на Дальнем Западе несколькими фирмами, наверняка порожденными самим MS). Чаще создается еще одна копия БД, в ней производятся изменения, затем производится замена баз, как я и описал. А так как аппаратная часть всех необходимых обеспечений (те, кто хоть мельком знакомы с теорией IT, сразу поняли, какой список "обеспечений" я имею в виду) стала намного производительнее, чем была, то замена происходит быстро. Однако не все так просто, как хотелось бы, и нескоро будет просто. PS Особенно не скоро, пока существуют флудеры и тролли, который хлебом не корми, но дай поиздеваться над "пенсионерами". Если бы в 90-х, когда они еще только что появились на свет или в лучшем случае уже кушали свои козявки, не затормозили (насильственно, под влиянием наших собственных либеральных демократов, ну и не без западных долларей, конечно) развитие науки и промышленности России и отделившихся "стран", и вместе с этим не похерили бы естественную преемственность поколений , то сегодня не пришлось вам, многим и многим программерам - нашим прямым потомкам - задавать подобные детские вопросы и миллионы раз изобретать все тот же самый велосипед в каждой отдельно взятой коммерческой организации, прикрываясь локтями от всех других подобных же программеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 13:15 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
MS? Какое отношение технологии БД MS имеют отношение к технологиям Oracle? Ну а в целом, подход для блокировщиков - удалить индексы/загрузить/создать - работает быстрее Для Oracle - это подходит для продукта Oracle RDB (бывшая RDB от фирмы DEC) А для того Oracle, который все обычно имеют ввиду, я выдержку давал, как происходит добавление данных и построение индексов для них с последующим мержем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 13:30 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Класс! Только бы тему не закрыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 13:32 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
МассажистЧто может быть и как исправить?посмотреть в сторону sqlloader. Есть-ли в таблицах последовательности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 13:47 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Увеличьте размер файла для индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 13:52 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Чем меньше подробностей, тем больше экспертов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 14:16 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Pavel_PV, как по вашему индексы в parallel будут обновляться? И за счет чего там может получиться прирост в скорости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 14:59 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, SQL есть SQL. В любой среде интерпретатор этого языка написан в конце концов на С, а C есть C. Не надо противопоставлять одну фирму другой! Если бы они были настолько разными по своим возможностям, то какой-то из них уже давно бы не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 18:30 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 19:07 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Гавриловнаписан в конце концов на Сфвмас и стебелек на паскале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 19:10 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Гавриловlandy, SQL есть SQL. В любой среде интерпретатор этого языка написан в конце концов на С, а C есть C. Не надо противопоставлять одну фирму другой! Если бы они были настолько разными по своим возможностям, то какой-то из них уже давно бы не было. Надеюсь тут все получится, и что-то изменится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 19:26 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
ura1y, Я очень хочу, чтобы всё получилось - но ведь знаю наперед, что не получится. О чем и сердце болит. А ведь мы, пенсионеры, давно know how. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 19:39 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
-2-, Да ты только флудер, блин! А я тебя до сих пор считал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 20:25 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
SQL есть SQL. В любой среде интерпретатор этого языка написан в конце концов на С, а C есть C При чем тут реализация интерпретатора SQL? Имеем горшочки разных размеров и разных систем(угольный, электрический, атомный) Вы говорите - Горшочек вари/не вари/налей кипятку(суть SQL) При этом реализация механизмов кипячения/отключения/открытия кранов в горшочках разная. И методы повышения скорости приготовления кипятка/выключения/налива - зависят от того в каком горшочке вы его готовите Вы же говорите, что все горшочки одинаковые, т к выполняют вари/не вари/налей Собственно это я и хотел донести, что при использовании разных горшjчков методы будут различаться. Вы же не будете тушить электрический или атомный гршочек водой, чтобы их выключить? Хотя это возможно, вопрос насколько эффективно и безопасно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 21:06 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Грешно смеяться над больным человеком. По делу - выдать подробности про IO систему, количество дисков, конфиг. ASM или файловая система? Проверить, что нет какого-нибудь авторасширения, и место под новые данные есть. Скорее всего проблема где-то здесь. Вам же расписали алгоритм вставки с append. Единственный шаг, зависящий от размера таблицы, это слияние индексов. У вас хватает памяти для этого, в своп не сваливаетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 21:40 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
ГавриловДа ты только флудерТвой почерк уж очень напоминает автора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2017, 01:36 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
ст.ебелёк, кончай стебаться! А вообще-то, давно уже всем всё ясно - и что делать задавшему вопрос автору темы, и всем прочим. Тему пора закрывать, а то уже, как в плохих блогах без строгого модератора, дело пошло на личности. Я могу, конечно, выражаться в этом стиле, и даже круче других (морская закалка), но не хочу больше, надоело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2017, 10:43 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, интерпретатор SQL вот при чем, если Вы не поняли этого до сих пор, вроде как бы программируя на SQL. Во время трансляции любой программы, в том числе и созданной в редакторе SQL, предоставляемом любой из фирм, в любом случае Ваша SQL-программа (запрос) тоже транслируется в исполнимый код. Но SQL надо сначала перевести (транслировать) в тот код, который понимает компилятор основного языка программирования. Это называтся прекомпиляция . Только не пишите мне, что Вы этого не знали. А если знали, тогда ваши возражения - именно флуд, и не более того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2017, 10:55 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Вы мыслите только одним типом INSERT А в Oracle возможны варианты INSERT ... и INSERT /*APPEND*/ ... А теперь внимательно почитайте ссылку, которую я приводил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2017, 11:39 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Гавриловlandy, интерпретатор SQL вот при чем, если Вы не поняли этого до сих пор, вроде как бы программируя на SQL. Во время трансляции любой программы, в том числе и созданной в редакторе SQL, предоставляемом любой из фирм, в любом случае Ваша SQL-программа (запрос) тоже транслируется в исполнимый код. Но SQL надо сначала перевести (транслировать) в тот код, который понимает компилятор основного языка программирования. Это называтся прекомпиляция . Только не пишите мне, что Вы этого не знали. А если знали, тогда ваши возражения - именно флуд, и не более того. Я очень извиняюсь, но запрос SQL не транслируется в "основной язык программирования". Совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2017, 15:48 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landyINSERT /*APPEND*/ ... А что такое - INSERT /*APPEND*/ ? Может быть INSERT /*FAST*/ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2017, 16:52 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landyТут,например, https://docs.oracle.com/cd/B12037_01/server.101/b10752/hintsref.htm Что за хинт FAST?Я не вижу никаких хинтов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 08:46 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Трудно загуглить ? 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 09:50 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, Чудак, сравни, что пишут в доке, со своими комментариями и снимись с ручника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 14:17 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
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. Имеем 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. Как видим, число сегментов не изменилось - данные вставились в пустые страницы. Теперь удалим часть данных и опять вставим с хинтом 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. Мирикал - добавились новые сегменты - суть пустые страницы не искались, а данные добавились в "конец" Так что не нужно газовать, берем словарь и читаем, что в оригинале или проверяем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 18:55 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Можно просто удалить все данные из t1, и посмотреть число сегментов под таблицу Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. и теперь вставить данные с хинтом 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. Видим, что все равно аллокируются новые сегменты - старые не используются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 19:15 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, Для кого этот ликбез? TC в первом сообщении так и написал что insert именно такой. Вопрос же в том - что происходит с индексами? Кстати, можете попробовать в Вашем примере выполнить два инсерта подряд, не делая commit между ними. В какие блоки попадут записи второго инсерта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 19:17 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, Я лично понял так: Bfink, нехороший человек, решил докопаться ,что у тебя в сообщении не было знака +. Elic пытался намекнуть об этом же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 20:03 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Вот результат - два инсерта и общий 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 20:19 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, Нет :-) два инсерта с хинтом APPEND подряд без commit-а между ними. Это явно вам покажет, что проблема не в отведении только новых сегментов. А индексам явно становится все хуже и хуже при последовательных инсертах с хинтом APPEND (естественно с commit-ами между ними). И в чем тут проблема хотелось бы понять. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 20:39 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Они не выполнятся Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 20:46 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landy, Про что и говорю - insert с хинтом APPEND - это не просто использование новых сегментов и не просто аналог direct load sqlloader-а. Кстати, у лоадера, кажется при direct_load индексы отключались, а потом перестраивались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2017, 20:54 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Bfinklandy, Для кого этот ликбез? landyдля Elic Я дожил до момента, когда на этом форуме начали проводить ликбез для Elic'а! ЗЫ. Однозначно пора заводить раздел форума "Просто посмеяться", ибо отдельные сообщения из этой темы не передадут весь колорит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 07:22 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Ну как я понял Elic указал вот на это Код: plsql 1. а не на "+" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 07:49 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Bfink, Если верить Тому, то вставка с APPEND выглядит так Код: plsql 1. 2. 3. 4. 5. 6. 7. ИМХО, для примера с добавлением 10000000 записей получается не сильно хорошая идея, легче наверное дропнуть индексы, добавить записи и пересоздать. По поводу проблемы у ТС, при добавлении 20000 записей к 70 млн это должно быть быстрее. Но замедление скорости мержа индексов , как я понимаю работу btree, скорее всего связано с просмотром блоков в листе(он ведь двусвязанный список?), для того чтобы добавить данные в конец списка. Т е возможно большое количество не уникальных записей Но , как тут уже говорили, деталей от ТС нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 08:06 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Можно глянуть для интереса select num_rows, distinct_keys, blevel, leaf_blocks, distinct_keys/leaf_blocks from user_indexes where index_name = .... до инсерта, после инсерта. Стату только не забудьте собрать. Ну и сырой трейс может что то подсказать, с чем он там так ковыряется. Вдруг что то с параметрами хранения можно подкрутить. А так да, мало данных, что б что то конкретное подсказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 10:04 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
landyНу как я понял Elic указал вот на это Код: plsql 1. а не на "+"Посмотри на свои сообщения до того, как встряли бфинк и я. И не занимайся метанием бисера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 20:31 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
schi, Вы куда-то отъехали от физической действительности или вооще не в курсе? А на каких, по-вашему, языках программируются программы вообще и компиляторы в частности, если они написаны не на языках ассемблеров, не на С (в основном!) и всех прочих известных языках программирования, которых уже известно более 1600 только зарегистрированных, т.е. не повторяющих другие. Компиляторы (программы-трансляторы), дорогой товарищ,- это такие программы , чтоб Вы так знали, и они написаны каким-то одним человеком относительно разумным (<здесь системой не переведено с греческого> - а дословно: человек не окончательно умный ), но не получены нами откуда-то свыше. Если Вы часто и много смотрите ТВ3 или РенТВ - кончайте это делать срочно! Если этого не сделаете, станете таким же "не окончательно" разумными, как добивающийся только рейтинга и гонораров автор якобы ежедневных, но мнлого раз повторяющихся ТВ-передач, а также прилагающихся к тем же TV-передачам его же "книгам"-нетленкам. Я конкретно имею в виду каждый день с утра до вечера юродствующего ("слишком выступающего", как назвали бы мы в 60-х годах) перед камерой Игоря Прокопенко и многих, многих ДР акул и карасей камеры (могу назвать, но это будет длинный список). А хорошо бы их всех хоть на месяц засадить в камеру настоящую - для релиза! Разве нет? Вторая часть напрямую к Вам не относится, SCHi, но сравнивать и при этом думать никогда не вредно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 21:02 |
|
||
|
Медленный insert
|
|||
|---|---|---|---|
|
#18+
Вот новость-то! Слава Господу Богу, кто-то наконец где-то прочитал, что существует в языке SQL INSERT- UPDAТЕ. Может быть, лет через 300 кто-то вспомнит, что и SELECT/UPDATE тоже когда-то существовал. При нем было как-то проще и уютней. Это только с недавних пор неучам приходится доказывать, что 2 x 2 + 2 = 8, а не 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 21:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885477]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
208ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 522ms |

| 0 / 0 |
