|
|
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
Вопросительный вопрос: допустимо ли делать замену домена со сменой базового типа? т.е. varchar(100) -> blob subtype text integer -> varchar(20) и тому подобное. сервер делает это без проблем. чревато ли боком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 13:59:33 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
pastor, не желательно. Лучше через временный столбец. Хотя именно при таких заменах по идее проблем быть не должно. Меняешь как через системные таблицы или через ALTER COLUMN? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 14:06:41 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Думаешь я это делаю по доброй воле? :( системные таблицы. 2.5.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 14:23:34 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
pastor, для второго случая всё можно сделать без системных таблиц Код: sql 1. 2. 3. 4. 5. 6. Все нормально проходит. Вот наоборот не пройдёт. Код: sql 1. 2. Код: plaintext 1. 2. И правильно делает. А вот для смену на блоб не работает, хотя по идее ничего мешать этому не должно. Код: sql 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2013, 14:37:07 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
Я вот тоже хочу спросить. Выяснил, что писать: Код: sql 1. нехорошо, ибо: 1) синтаксис оператора не допускает not null, придётся сначала создать not null домен и после type указывать его; 2) если MyColumn было символьным, то получим шиш, как сказано выше "Cannot change datatype for column from a character type to a non-character type" ; Если воспользоваться классическим способом и создавать временный столбец нужного типа, потом копировать в него данные из старого с приведением типа, потом грохнуть старый столбец и переименовать новый в старый - да, никаких проблем, сейчас так и делаю, но alter column type настолько влёт заменяет integer на varchar (миллион записей - за какие-то жалкие 0ms, по сравнению с 8s "классики"), что очень хочется воспользоваться этим скороходом по максимуму. Подскажите, пожалуйста, как именно работает alter column type, откуда такая скорость? И где вообще можно почитать про ограничения на использование alter column type (плюс понять, почему он менее безопасен)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 21:52:17 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
MrCat, вот здесь немного объясняется http://www.ibase.ru/devinfo/metaver.htm Синтаксис назначения для доменов и полей not null/null будет в FB3. Однако когда устанавливаешь not null, если в таблице будут данные, то скорость уже не будет большой, т.к. надо проверить все записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2013, 22:27:19 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
Ясно. Alter column меняет не записи, а формат. При вычитке записи и "разборе на поля", используется последний формат таблицы, и сырые данные записи трактуются в соответствии с ним. Т.е. меняются не данные, а правила трактовки. Теперь понятно, почему не рекомендуется, и насколько сие ограничено. Удивительно, но я не вижу временнЫх затрат на приведение типа. скрипты для проверки увеличения временнЫх затрат на фетч записей с изменённым типом Код: 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. перед запуском второго скрипта я перезапускаю сервер, чтобы вычистить кэш. Наверное, есть более изящный способ очистить кэш, но я его не знаю. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Оба окружённых set STAT запроса выполняются за 0,8 секунд, при почти равной прочей статистике. Второй работает даже чуть быстрее. Получается, что сервер не несёт дополнительных расходов на преобразование типа при фетче, но такого ведь не может быть! Подскажите, пожалуйста, где я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 16:49:00 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
MrCatгде я неправ? Ты неправ в оценке процента затрат на преобразование данных в общей трудоёмкости выборки данных. Он упорно стремится к нулю. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 16:58:10 |
|
||
|
Замена домена на живой БД
|
|||
|---|---|---|---|
|
#18+
'от я баклан, меняю int на int! Если во втором скрипте проставить замену на _chr домен, то времена получаются около 0,42 и 0,59 секунд соответственно, т.е. затраты на приведение типа есть. Лады, большое спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 16:58:57 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38502799&tid=1564054]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 182ms |
| total: | 416ms |

| 0 / 0 |
