|
Оптимизация преобразования структуры бд
|
|||
---|---|---|---|
#18+
Всем привет. Может кто подскажет идеи по ускорению конвертации базы ее размер у пользователей может быть различный от 10 мб до нескольких гиг :) Цель при старте приложения убить одну таблицу со связью 1-1 и перетащить поле (24 байта) в другую. Алгоритм конвертации выглядит так Код: sql 1. 2. 3. 4. 5.
Тестовая база размером 266 мег (250 тыс записей) и скрипты лежат тут https://yadi.sk/d/lJm6Is3GWj6pj пока я нашел способ ускорить время обработки путем отключения журнала и снихронизации. но что-то мне не нравится этот способ т.к. процесс не быстрый и может разрушить базу. Код: plaintext 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.
-- ~PPA() {} // ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2014, 19:12 |
|
Оптимизация преобразования структуры бд
|
|||
---|---|---|---|
#18+
Попробовать создать fly_hash_block_new с новой структурой, вставить туда нужные данные, грохнуть устаревшие таблицы, переименовать fly_hash_block_new в fly_hash_block, пересоздать констрэйнты и индексы. На большом объёме данных может получиться значительно быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2014, 23:46 |
|
Оптимизация преобразования структуры бд
|
|||
---|---|---|---|
#18+
Sergei.Agalakov, Я такое не тестил... а почему думаете, что это будет быстрее? если база 1 гиг, то после такой операции она распухнет до ~ 2 гигов VACUUM по такому объему очень накладная операция. также повышается вероятность проблемы - у юзера не хватит места на диске. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2014, 10:35 |
|
|
start [/forum/topic.php?fid=54&tid=2008769]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 148ms |
0 / 0 |