|
|
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
Select возвращает 7 млн. записей. Сreate table as select выполняется за минуту. Insert into big_table висит. Ждали 2 раза по 10 часов, срубали сессию. Сейчас горожу костыль со вставкой покусочно (проверял 50, 100 тыщ - вставляет хоть и долго, но в разумные сроки). И буду изучать ситуацию в целях повышения образованности. Хинт INSERT /*+APPEND */ не изменил ситуацию. Триггеров на таблице нет. Отключать constraint и индексы для проверки, насколько они влияют, не буду, это не решение - что, при каждом insert их отключать? Да и немного их. Впрочем, foreign key отключал - не помогло. Big_table партиционированная по дате (месяцы), 400 млн. строк. Трассировку читал всего пару раз за 10 лет, опыта в этом не имею. Буду благодарен за подсказку, что означает большой db file sequential read, и куда копать еще. Это и это прочел, там ничего не накопали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:17:40 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
а чем не понравился авторСreate table as select выполняется за минуту. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:22:09 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdm... что означает большой db file sequential read, и куда копать еще. индекс читается план CTAS с планом insert select одинаковый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:30:20 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
Ramin Hashimzadeа чем не понравился Сreate table as select выполняется за минуту. ? Тем, что вставку все же надо делать в большую таблицу. Т.е. проблема не в select, а в insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:40:57 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdmRamin Hashimzadeа чем не понравился ? Тем, что вставку все же надо делать в большую таблицу. Т.е. проблема не в select, а в insert. insert append практически то же самое что ctas ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:45:54 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
план CTAS с планом insert select одинаковый? Да. Вот он, прикладываю картинку. казинакdmdmdm... что означает большой db file sequential read, и куда копать еще. индекс читается Как изменить ситуацию? Менять тип индекса? С партиционированными таблицами тоже мало работал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:50:11 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdmДа. Вот он, прикладываю картинку. все таки для сравнения не помешал бы план insert append dmdmdmКак изменить ситуацию? Менять тип индекса? С партиционированными таблицами тоже мало работал. 7 млн в селекте это какая доля от общего кол-ва записей? Может лучше фулскан? и в вашем плане ctas распаралеливается а insert append паралелится? в общем второй план желательно глянуть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 11:01:13 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
судя по трассе он отличается от плана CTAS INDEX UNIQUE SCAN I_OBJ1 INDEX RANGE SCAN I_CDEF3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 11:03:28 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdmSelect возвращает 7 млн. записей. ... Хинт INSERT /*+APPEND */ не изменил ситуацию. Триггеров на таблице нет. Отключать constraint и индексы для проверки, насколько они влияют, не буду, это не решение - что, при каждом insert их отключать? Для сопровождения индексов 7 млн. строк надо подождать. Очевидно CTAS, еще и параллельный, будет быстрее. Версия сервера ? SQL monitor отчет сделать проще всего было бы в данном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 11:31:05 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
7 млн в селекте это какая доля от общего кол-ва записей? Небольшое, как для исходной, так и для целевой, в них сотни миллионов строк. казинаквсе таки для сравнения не помешал бы план insert append Прикладываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 11:46:20 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
Покусочный костыль сделал, по 100 тыщ. Но время выполнения insert - около 600 с, тогда как в тестах отдельным запросом выходила минута, т.е. в 10 раз меньше. Пусть пока продуктив работает, хоть так. На тестовой БД еще погоняю в свободное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 12:13:00 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdmПокусочный костыль сделал, по 100 тыщ. Но время выполнения insert - около 600 с , тогда как в тестах отдельным запросом выходила минута, т.е. в 10 раз меньше. Пусть пока продуктив работает, хоть так. На тестовой БД еще погоняю в свободное время. ну значит, скорей всего, на перестройку индекса время уходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 12:19:20 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
Попробуй без использования индексов, которые присутствуют в плохом плане (хинтами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 12:25:23 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
а эти 7 млн записей во сколько секций лягут? пробуйте в цикле по секциям insert append ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 12:25:31 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
XCBа эти 7 млн записей во сколько секций лягут? пробуйте в цикле по секциям insert append В одну и ту же. Это журнал операций, партиция - месяц. select distinct t.date1 from TMP_IMP_AGG t - август. Пробую прямо на продуктиве. Основной процесс расчета идет со стабильной скоростью: Код: plsql 1. 2. 3. 4. 5. 6. 7. (счетчик выводится после каждых 100 тысяч) В отдельной сессии выполняю тот же запрос, что сейчас выполняется в цикле пакаджа (там, где 500 000 - из-за этого увеличилось время для основного расчета): Код: plsql 1. 2. 3. 4. 80 с. Код: plsql 1. 2. 3. 4. 500 с. Повтор Код: plsql 1. 2. 3. 4. 6 с. На тесте - те же 700 с. Код: plsql 1. 1.5 с из любого диапазона. Код: plsql 1. 11 Гб. Понятно, что дело в индексе. Теперь очевидное решение, видимо - drop index до массового insert, создание после него. И чистка данных. Посмотрел историю - никакого качественного скачка нет, есть постепенный количественный рост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:11:31 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
ну дроп индекс никогда не поздно, но спешить все же не стоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:14:23 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
контрол ентер это засада по теме индекс глобальный или локальный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:17:11 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdm, если есть такая разница... я думаю индекс глобальный и посмотреть решение локального индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:23:07 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
XCBиндекс глобальный или локальный? В начале темы DDL приведены. Локальный. Сейчас такая статистика: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:31:30 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
После drop index / create index скорость вставки 8-10 с на 100 тысяч строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:35:09 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
dmdmdmПосле drop index / create index скорость вставки 8-10 с на 100 тысяч строк. наверно % соотношение удаленных записи на реальных записей большая. То есть хочу сказать что реальные записи не соотвествует к индексу. Код: plsql 1. но перформанс на инсерт насколько оно влияет это вопрос. думаю нужно проверить. просто так как вы уже сделали "drop index / create index " сложногото будет сказать это из за этого или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:51:33 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
>>После drop index / create index можно было обойтись манипуляциями с одной секцией индекса ps... мой работодатель ограждает меня от скачки файлов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:14:48 |
|
||
|
insert в большую таблицу, трассировка
|
|||
|---|---|---|---|
|
#18+
XCB, у меня такая же проблема, как и у автора этой темы. помогает только пересоздание индексов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 11:00:53 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=38386655&tid=1887773]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
201ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 521ms |

| 0 / 0 |
