|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Всем привет. Есть база данных, созданая с чарсетом ISO8859_1. В новой версии развитие нашей программы был сделан переход на UTF8. Поэтому в программе установки запускается специальный скрипт, который с помощью команды alter ссоздает временный столбец, в него копирует данные из столбца с кодировкой ISO8859_1, удаляет старый столбец, создает новый, копирует данные из временного столбца и удаляет временный столбец. Таким образом обрабатывается не одна таблица, а довольно много. В чем возникла проблема: обнаружилось, что у некоторых таблиц такие обновления проходят не так гладко. Например если в конвертируемом столбце есть многобайтные символы типа 'µ', национальных символов каждой страны и есть подозрения на символ '%'. Вместимость столбца 100 байт (VARCHAR(100) CHARACTER SET UTF8) Строка содержит допустим 40 байт и спецсимвол. Если же сделать select прямо из таблицы, то получим Arithmetic exception. Иногда прямой селект проходит нормально, но вот в связанной view выкидывает Arithmetic exception. При попытке сделать insert или update с такими данными получаем Arithmetic exception. Самое непонятное в этом то, что в одних таблицах все нормально с этим, в других постоянно проблема. Приходится после апдейта проводить подобную конвертацию руками повторно. Что посоветуете делать? Используется FB 2.5.5 как SuperServer, под Win7 или Win10. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 09:34 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, Временно увеличьте "Вместимость столбца" в 4 раза. А после конвертации можете вернуть обратно размер поля. Проверено и не раз. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 09:54 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
varchar(100) это байты и "паспортная" вместимость такого столбца - 25 юникодных символов . Ну и 2.5. 5 - странно, как минимум. Суперсервер - тоже странно, но, может быть, у вас тот редкий сценарий когда это осмысленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 09:56 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
AltHasp, Так и делается. временный столбец содержит 1000 байт. изначально на тестах я и основной столбец увеличил как и временный - для программы это не критично тем, что внутри используются форматированные данные фиксированной длинны (записи типа record). Но вот шеф настоял, что бы все вернулось в порядок. Пришлось в скрипт при обратном копировании добавить substring. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:07 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, все бы хорошо, но несходится с логикой: при вмстимости столбца 100 символов, 39 символов идут как однобайтные и 'µ' идет в двухбайтной кодировке. по поводу смены версии сервера вопрос трудный. Для этого нужны веские основания. Вероятно так и произойдет, если мне удастся доказать, что новая версия как раз и исправляет подобные проблемы. Используется то, что длительное время тестировалось. Клиентов около тысячи, обновления проводим не мы, а лучше сказать "другая фирма", которую невозможно заставить просто так обновить сервера базы данных у клиентов. Поэтому этим занимается программа установки, которую мого раз тестируют, пока она попадет в отдел поддержки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:20 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov varchar(100) это байты и "паспортная" вместимость такого столбца - 25 юникодных символов . С чего это вдруг? varchar(100) - это 100 символов, RDB$FIELD_LENGTH у такого поля будет 400. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:22 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd по поводу смены версии сервера вопрос трудный. P.S. Про "требуется бэкап-рестор" - в курсе, но сколько их на все выпуски? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:49 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
IBExpert, это в теории. На практике, проводя конвертацию, я создавал временные столбцы сначала той же длины, что и оригинал. В результате получал при update исключение arithmetic exception. потом tmp увеличил вдвое, но нашлись пользователи у которых и 200 не прокатывало. Тогда уже задал для tmp 1000 и все пошло более менее нормально, пока у французов не нашлись данные, где помогло только 3000 и времени на решение было 5 минут. Естественно уже 1000 была в официальном пакете обновлений, а этих французов пометили как особых личностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:52 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
AltHasp svd, Временно увеличьте "Вместимость столбца" в 4 раза. А после конвертации можете вернуть обратно размер поля. Проверено и не раз. Удачи! как вы это делаете? команду можете указать, чтоб внести ее в скрипт? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:54 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd В чем возникла проблема: обнаружилось, что у некоторых таблиц такие обновления проходят не так гладко. Например если в конвертируемом столбце есть многобайтные символы типа 'µ', национальных символов каждой страны и есть подозрения на символ '%'. svd Вместимость столбца 100 байт (VARCHAR(100) CHARACTER SET UTF8) svd На практике, проводя конвертацию, я создавал временные столбцы сначала той же длины, что и оригинал. В результате получал при update исключение arithmetic exception. потом tmp увеличил вдвое, но нашлись пользователи у которых и 200 не прокатывало. Тогда уже задал для tmp 1000 и все пошло более менее нормально, пока у французов не нашлись данные, где помогло только 3000 и времени на решение было 5 минут. Воспроизводимый пример поможет разобраться в этом безобразии. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 11:02 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Версии??? С каких пор "выпуск (обновлений)" стал "сменой версии"? P.S. Про "требуется бэкап-рестор" - в курсе, но сколько их на все выпуски? Выпуск обновлений теоретически может привести к отказу системы. С нашим комплектом идет управление роботом. За простой приходится платить деньгами. ПС: Обновление - довольно сложный процесс. И базы данных (их две)- только некоторая часть из этого. С базами делается следущие манипуляции: удаление всех зависимостей (триггеров, процедур, функций), изменение для utf8, сравнение базы со скриптом на изменение метаданных, исполнение всяких вспомогательных скриптов, меняющие данные в таблицах, Бэкап - рестор баз данных. И только в конце, опционально, идет смена сервиса базы данных, и то, если человек это кликнул - по умолчанию это не активно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 11:55 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
[quot hvlad#22181328] svd Звучит как ужас-ужас. Кто-то где-то что-то делал не так. Воспроизводимый пример поможет разобраться в этом безобразии. Выглядит это так: Код: 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.
К сожалению, последнюю таблицу, которая виновата была, пока я был в коллеги выкинули из списка и просто ее дропают. В ней данные, которые частично востанавливаются из скрипта, если они нужны. В данный момент это помогло, но сама практика не очень хорошая. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 12:35 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdЕсть база данных, созданая с чарсетом ISO8859_1. svdесть многобайтные символы типа 'µ', национальных символов каждой страны svdСамое непонятное в этом то, что в одних таблицах все нормально с этим, в других постоянно проблема. А теперь вопрос на засыпку: национальные символы каких стран представлены в ISO8859_1 и каких стран - занесены в поле? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 12:44 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, я не знаю, что такое "execute statement" в какой тр-ции\коннекте оно выполняется и зачем оно тут вообще нужно. Мне кажется подозрительным использование одного и того же имени tmp_utf для всех потребностей. Кроме того, такой подход не позволяет конвертировать более одного поля на таблицу за один раз и заставляет делать несколько апдейтов вместо одного. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 13:22 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А теперь вопрос на засыпку: национальные символы каких стран представлены в ISO8859_1 и каких стран - занесены в поле? Изначально были только Европейские (Испанский, Французский, Немецкий, Итальянский, Турецкий, Польский, Португалский, Нидерландский). потом 6 лет назад встал вопрос о китайском и арабском. Потому сделали перевод только необходимых столбцов для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 12:27 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
hvlad svd, я не знаю, что такое "execute statement" в какой тр-ции\коннекте оно выполняется и зачем оно тут вообще нужно. Мне кажется подозрительным использование одного и того же имени tmp_utf для всех потребностей. Кроме того, такой подход не позволяет конвертировать более одного поля на таблицу за один раз и заставляет делать несколько апдейтов вместо одного. Именно так. Весь перенос делался не за один день, а по мере перевода разных часте программ и Интерфейсов на Юникод (миграция с Дельфи 2007 на ХЕ8). Как только провека работоспособности интерфейсов подтверждалась протоколами и рапортами клиентов, внесенные изменения фиксировались. Я опубликовал только часть скрипта. На самом деле меняются много таблиц. И только пятая часть из списка имеет более одного столбца с utf8. Разработка ведется разными людьми, сегодня задание на перевод интерфейса может быть у меня, завтра у другого сотрудника. Начальник отдела зставляет все делать по шагам (и я, например, исходя из жизненного опыта, нахожу это правильным). В случае проблемы с одним столбцом придется откатывать все изменения. Кроме того ему не нравится "коренные изменения типа оптимизации кода" - тогда трудно найти "что пошло не так" после очередного внесения изменений. Обновление программ (и структур баз) производим не мы. Гораздо удобней получить рапорт, что именно такой то столбец в такой то таблице не прошел, чем неверны все данные в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 12:44 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
hvlad, Еще к тому же мен кажется странным, что клиенты проде из одного региона, у одних такой эффект может проявиться, у других нет. Компьютеры у них у всех одного промышленного типа, различаться могут по процессорам и памятью на борту только. Операционка со всеми программами устанвливается из единого образа - по идее отличий быть не должно в принципе. но происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 12:48 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, много слов, но ничего полезного для понимания причин исходной проблемы, увы. Итого: без воспроизводимого примера мне тут сказать больше нечего. Ну и 2.5.5 давно нужно заменить на 2.5.9 (как минимум). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 12:59 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, я бы посоветовал 2.5.5 обновить до 2.5.9, или по крайней мере посмотреть release notes, были-ли какие-то баги исправлены между этими версиями в отношении юникода. По крайней мере в 2.5.1 однозначно были баги с сортировкой (см. раздел "Регистронезависимый поиск" в http://www.ibase.ru/unicode_faq/ , там красным выделено, и указаны 3 бага). Насчет "ошибок после переноса столбцов" - у вас там точно это через дисконнект-коннект делается? Вдруг висел какой-то коннект, который не давал обновить метаданные в памяти. У суперсервера 2.5 кэш метаданных общий. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 13:02 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdЕще к тому же мен кажется странным, что клиенты проде из одного региона, у одних такой эффект может проявиться, у других нет. Ничего странного. У одних в базе есть буквы, не укладывающиеся в ISO 8859-1, у других - нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 13:19 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
kdv svd, я бы посоветовал 2.5.5 обновить до 2.5.9, или по крайней мере посмотреть release notes, были-ли какие-то баги исправлены между этими версиями в отношении юникода. По крайней мере в 2.5.1 однозначно были баги с сортировкой (см. раздел "Регистронезависимый поиск" в http://www.ibase.ru/unicode_faq/ , там красным выделено, и указаны 3 бага). Вроде смотрел, но не все: с версии 2.5.5 и выше - вроде бы ничего подобного не нашел, хотя нашел в бэг-треккере одиин рапорт о проблемах имен хранимых процедур при utf8. (версия 2.5.7) Но вроде как не подтвердилась, после перехода на другую версию. kdv Насчет "ошибок после переноса столбцов" - у вас там точно это через дисконнект-коннект делается? Вдруг висел какой-то коннект, который не давал обновить метаданные в памяти. У суперсервера 2.5 кэш метаданных общий. Обновление производится специальной программой на копиях баз данных - копируются в локально доступные папки, перед каждым шагом сервис стартует, после выполнения шага сервис останавливается. Правда выполнение скриптов производится в одном шаге запуска сервиса, а вот выполнение каждого скрипта в отдельной конекции. После операции бэкап-рестор подготовленные базы копируются вместе с другими файлами на свое рабочее место(этот шаг выполняется в не контекста обновления баз и если базы не обновились, то и опреация не производится, и обновление не применяется на рабочей машине). То есть в период обновления у программы обновления единичный(но не монопольный) доступ к базам. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 13:28 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ничего странного. У одних в базе есть буквы, не укладывающиеся в ISO 8859-1, у других - нет. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Я вот как то не нашел в данном инсерте ни одного многобайтного символа. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 13:30 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ничего странного. У одних в базе есть буквы, не укладывающиеся в ISO 8859-1, у других - нет. Дополнение: Причем столбец Name имеет UTF8 кодировку. Остальные ISO ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 13:35 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdПричем столбец Name имеет UTF8 кодировку. А вот тут-то и грабельки: в него вполне могли запихать больше букв, чем разрешено, поскольку Firebird в старых версиях проверяет только лимит в байтах, а в новых - ещё и в буквах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 13:50 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, НЕ может быть. Такие грабельки уже проверяли и исправляли. Только не в данном случае. В столбце объявлено 100 символов utf8, в запросе заносится 36. Столбец Artikelcode имеет размер 20 ISO8859_1. там 8 цифер всего. Остьльные строковые значения пустые. Где внесены даты и время - используются соотвественные столбцы Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 14:23 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdВ столбце объявлено 100 символов utf8, в запросе заносится 36. Столбец Artikelcode имеет размер 20 ISO8859_1. там 8 цифер всего. Остьльные строковые значения пустые. Где внесены даты и время - используются соотвественные столбцы На этой таблице запрос выше отработал без ошибок. Что подозрительно, в нём поля WaWiDatum и VerfallDatum помянены местами относительно DDL. Что намекает, что таблица может быть не совсем той. Другая возможность - триггера на ней, в которых и происходит ошибка. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 14:43 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov На этой таблице запрос выше отработал без ошибок. Что подозрительно, в нём поля WaWiDatum и VerfallDatum помянены местами относительно DDL. Что намекает, что таблица может быть не совсем той. да, он отрабатывает на все 100%. Коллеги исправили ошибку, удалив таблицу командой drop и пересоздав ее через DDL-команду. То есть по логике не внесли никаких изменений в метаданные. Dimitry Sibiryakov Другая возможность - триггера на ней, в которых и происходит ошибка. Проверил зависимости - вообще никаких нет. Спасабо, Дмитрий, за вашу помощь. Все это уже становится гаданьем на кофейной гуще. Дождусь следующего инцидента с таблицей и попытаюсь вытащить базу данных для исследований. Тогда опубликую еще раз сообщения. Пока ограничусь отпиской, что FB-Team рекомендует сменить версию сервиса. PS to Kdv: Дмитрий еще раз перечитал ваши рекомендации по переходу на Юникод. Хоть мы используем "старый способ", но отличие у наших баз только одно: хоть в скриптах создания базы и описано set names и create databse default character set как UTF8 , но в реальности из-за миграции данных они остаются ISO8859_1 . Это может играть какую то негативную роль? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 15:48 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 16:15 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdно в реальности из-за миграции данных они остаются ISO8859_1 в смысле? - я не помню, чтобы set names как-то влияло на чарсет создаваемого столбца. Это чарсет коннекта, не более того. - чарсет у БД определяет только чарсет создаваемых тексто-блобовых столбцов, если у них при этом чарсет не указан. Никто не запрещает указать у базы чарсет utf8, а потом создать столбец с чарсетом ISO8859_1. - изменение чарсета у базы никак не влияет на уже созданные столбцы. Чарсет у базы - это "дефолт чарсета для вновь создаваемых столбцов". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 18:57 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdЭто может играть какую то негативную роль? Это означает, что разработчики БД и приложения не совсем понимают что они делают и как это работает. Да, приход северного лиса в таких обстоятельствах - вопрос времени. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2020, 19:01 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это означает, что разработчики БД и приложения не совсем понимают что они делают и как это работает. Да, приход северного лиса в таких обстоятельствах - вопрос времени. Судя по этому сообщению 22182137 , то разработчики именно правильно ориентировались. Основной тип текстовых данных - ISO8859_1. UTF8 выбран как вспомогательный, потому что предоставляет возможность мультибайтовых национальных символов умещать в ограниченных объемах записей уже стандартированных интерфейсов. По сравнению с использованием UTF16 это заметно. С другой стороны замена всех символьных типов на UTF8 может привести к увеличению объема базы данных. В стандартной комплектации робота, основная база расположена на том же компьютере, где и сам робот. в зависимости от подключенного оборудования, процессор может быть от Celeron (управление одним роботом) до Core I7, Память от 1GB до 4GB. С этой стороны есть ли какие то рекомендации по использованию низкопроизводительных процессоров и небольшого объема рабочей памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 09:25 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
В огороде бузина ... Если вам требуется хранить "разноязычные" тексты - UTF8. При чём тут память и процессор??? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 09:36 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov В огороде бузина ... Если вам требуется хранить "разноязычные" тексты - UTF8. При чём тут память и процессор??? Всегда лучше узнать мнение специалистов. О том, какая машина будет использоваться решаю не я. Для подачи совета нужен веский аргумент. Сейчас аргументом является "это дешево и работает". Когда на одной машине работает PLC, программы с графикой и стримингом видео с вебкамеры, компилированные в Embarcadero (а Дельфи создает совсем не компактный код), да еще и база данных, вопрос становится актуальным. В данный момент база сконфигурирована так, что сразу ведет запись на диск. Но может оказаться так, что проблемы вызваны именно нехваткой памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 09:58 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
авторОсновной тип текстовых данных - ISO8859_1. UTF8 выбран как вспомогательный азанах такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 10:08 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdПо сравнению с использованием UTF16 это заметно. по сравнению с чем? Вы в курсе что такой кодировки в Firebird нет совсем. В последних версиях Interbase вроде есть, но как по мне она на фиг не сдалась. Про процессор. Вы ведь в курсе что если у вас чарсет коннекта и столбца отличаются, то Firebird будет делать преобразование кодировки на лету. Это будет жрать процессор. Как по мне, то в современных условиях нужны только две кодировки UTF-8 и OCTETS для бинарных данных. Остальные оправданы разве что из за совместимости со старым ПО, которое UNICODE не поддерживает. Объём БД на диске как по мне не так критичен, во первых он не вырастет кратно, ибо записи всё равно хранятся сжатыми, а во вторых в вашем случае не каждый символ будет занимать более 1 байта. Про память. Да потребление памяти скорее всего вырастет, но не сильно. Главный совет конфигурируйте Firebird под конкретную машину. Переходите на 3.0, там можно использовать SS с общим страничным кешем, что позволит сильно экономить потребление памяти, когда пользователей много. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 10:13 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Симонов Денис svdПо сравнению с использованием UTF16 это заметно. по сравнению с чем? Вы в курсе что такой кодировки в Firebird нет совсем. В последних версиях Interbase вроде есть, но как по мне она на фиг не сдалась. Про процессор. Вы ведь в курсе что если у вас чарсет коннекта и столбца отличаются, то Firebird будет делать преобразование кодировки на лету. Это будет жрать процессор. Как по мне, то в современных условиях нужны только две кодировки UTF-8 и OCTETS для бинарных данных. Остальные оправданы разве что из за совместимости со старым ПО, которое UNICODE не поддерживает. Объём БД на диске как по мне не так критичен, во первых он не вырастет кратно, ибо записи всё равно хранятся сжатыми, а во вторых в вашем случае не каждый символ будет занимать более 1 байта. Про память. Да потребление памяти скорее всего вырастет, но не сильно. Главный совет конфигурируйте Firebird под конкретную машину. Переходите на 3.0, там можно использовать SS с общим страничным кешем, что позволит сильно экономить потребление памяти, когда пользователей много. Большое спасибо! Дельные рекомендации. В данный момент чарсет коннекта utf8, а столбцов с ISO на порядок больше, чем UTF8. Полный перевод всей базы на UTF8 потребует использования дополнительной программы обновления. Переход на 3.0 уже раз обсуждался - из-за хранения пользователей в самой базе. Вот еще один аргумент скорейшего перехода. Пользователь используется всего один - sysdba. Хотя есть конфигурации с репликациями - там еще один добавляется. Но одновременных соединений от 39 до 60. Так же зависит от конфигурации: заспускаются различные треды, каждый со своим коннектом. Еще пара вопросов: при миграции с 2.5 на 3 много нюансов нужно учитывать при переводе базы? Есть ли где то готовое описание подобного перевода? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:06 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, по миграции специфики мало. Архитектуры у 2.5 и 3.0 все те же самые, разве что суперсервер распараллеливается по ядрам, и локальное подключение (без имени сервера) это ембеддед, а не xnet. А так - миграция как обычно - берем скрипт базы, запускаем на 3.0, проверяем. вычищаем все ошибки, составляем скрипт для модификации 2.5. модифицируем, делаем б/р. потом проверяем приложение на совместимость запросов. По несовместимостям - читать README.incompatibilities.txt. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:12 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, с 2.5 на 3.0 не так уж много надо переделывать. Все несовместимости описаны в Firebird 3.0 Release Notes в главе Compatibility Issues. Поскольку у вас практически только SYSDBA, то и геморроя с переносом пользователей не возникнет. Возможна некоторая коррекция процедур и триггеров, которые используют AS CURSOR, если для выражений в секции SELECT не задан алиас. Ну и желательно повычищать запросы где tcnm помесь явных и неявных JOIN. svdПереход на 3.0 уже раз обсуждался - из-за хранения пользователей в самой базе. А вот тут есть нюансы, особенно при работе с сервисами. Ну например при восстановлении БД, вам всё равно придётся пользоваться общесерверным SYSDBA ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:20 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, вот на 4.0, как мне кажется, перейти будет намного сложнее из-за новых типов данных. Там конечно есть специальный параметр в конфиге и всякие SET BIND OF, но это временные решения. Лучше пилить приложение для поддержки новых типов, и править запросы со всякими CURRENT_TIMESTAMP, CURRENT_TIME ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:28 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Симонов Денис вот на 4.0, как мне кажется, перейти будет намного сложнее из-за новых типов данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:32 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Всем спасибо за советы! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:33 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Мимопроходящий с чего бы вдруг, если унаследованные приложения о них понятия не имет ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:40 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Мимопроходящийс чего бы вдруг, если унаследованные приложения о них понятия не имет а с того, что без выставленных настройках совместимости запросы с CURRENT_TIMESTAMP, CURRENT_TIME будут выдавать типы TIMESTAMP WITH TIMEZONE и TIME WITH TIMEZONE. Тут либо править эти запросы и менять на LOCALTIMESTAMP, LOCALTIME, либо ставить режим совместимости, либо юзать SET BIND OF. Ну это я ещё в тройке CURRENT_TIMESTAMP на LOCALTIMESTAMP поменял, когда их ввели. Далее всякие SUM, AVG и выражения с BIGINT/NUMERIC(18, x) могут неожиданно вернуть тип INT128/NUMERIC(38, x) о которых приложение не в курсе. Опять же либо включаем режим совместимости, либо SET BIND OF. Так что, если не использовать режим совместимости, то компоненты доступа надо дорабатывать серьёзно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:53 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Мимопроходящий с чего бы вдруг, если унаследованные приложения о них понятия не имет ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:58 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Симонов Денис а с того, что без выставленных настройках совместимости выставил и забыл об этом навсегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 11:59 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Мимопроходящий *зачем* прикладной аппликухе туда вообще лазить? P.S. <тут вам не Арея> упираться, что проблемы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 12:20 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov "Прикладные апликухи" бывают сильно разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 12:23 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Мимопроходящий продемонстрируй насцущную необходимость ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 12:25 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, да не, при включённых настройках совместимости всё будет работать. Другое дело, что рано или поздно захочется воспользоваться новыми возможностями, и вот тогда поддержку новых типов, таки придётся пилить. И сделать это не так же просто как с BOOLEAN в 3.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 12:30 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Мимопроходящий продемонстрируй насцущную необходимость ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 12:46 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Симонов Денис да не, при включённых настройках совместимости всё будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 12:47 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Симонов ДенисКак по мне, то в современных условиях нужны только две кодировки UTF-8 и OCTETS для бинарных данных. Причём вторая тоже сомнительна из-за появления (VAR)BINARY, который может поменять свою внутреннюю сущность. Это сейчас он просто хак из-за того, что половина движка во имя взадсовместимости не поддерживает подтипы для строковых полей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2020, 13:06 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Всем привет. К сожалению, на форуме нельзя прикрепрять файлы более 150килобайт. В линке база с непонятными артефактами . В ней есть проекция VW_ARTIKEL_PG. Если ее фетчить до конца, то выкинется Arithmetic exception. Связанные с ней таблицы фенчатся нормально. Если ее удалить и создать заново, то ошибка исчезает. Вопрос, что могло привести к подобным дефектам? И это единичный случай (Именно на этой проекции). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 13:51 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svdчто могло привести к подобным дефектам? Использование литералов в тексте представления. Изменение структуры таблиц на которых она построена. Нет, баз я не качал и не открывал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 13:58 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
Всем привет. повторилась ошибка с греческой буквой µ. База данных лежит тут. В таблице ARTIKEL имеет следующую структуру: Код: 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.
отображает все без проблем для записи с ARTIKELCODE=5012616173004 (первая запись, если сортировать по имени). Таблица используется в проеции VW_ARTIKEL_PGЮ Код: 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.
Если фетчить проецию VW_ARTIKEL_PG, то выкидывает ошибку, хотя таблица отображается без каких либо проблем: cannot transliterate character between character set: Код: plsql 1. 2. 3.
Firebird 2.5.9.27139 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 11:03 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, Вот это тоже фетчится без проблем ? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 11:41 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
hvlad, да, запрос отобрадает без проблем. Прямо в первой позиции находится проблемная запись без каких либо Arithmetics exception. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 12:16 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, а если чарсет коннекта не utf8, а ISO8859_1 ? Насколько я вижу, в полях GName и Name последняя буква (греческое мю ?) не является буквой кодировки ISO8859_1, отсюда проблема транслитерации. VW_ARTIKEL_PG была создана в коннекте с чарсетом ISO8859_1 и поэтому содержит строковые литералы в этом чарсете. Вот соотв. часть BLR (21 - это charset id для ISO8859_1): Код: plaintext 1. 2. 3.
Когда COLEASECE сравнивает GName (UTF8) с пустой строкой в ISO8859_1 - оно приводит GName к ISO8859_1 и получает ошибку транслитерации. Не буду сейчас выяснять, к какому чарсету нужно было кого приводить, но сейчас оно вот так работает. Чтобы это исправить, достаточно пересоздать VW_ARTIKEL_PG в коннекте с чарсетом UTF8. Или явно указывать чарсет литералов (_utf8 ''), но это нехорошо выглядит, как по мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 13:11 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
13.04.2021 13:11, hvlad пишет: > Или явно указывать чарсет литералов (_utf8 ''), но это нехорошо выглядит, как по мне. вполне нормально оно выглядит. мы для литералов пользуем _win1251. и не нужно перекодировать метаданные при миграции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 13:21 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
hvlad, Спасибо большое. Это вносит некоторое понимание, почему после перекомпиляции вдруг начинает работать. Хотя нужно проверить всю цепочку наших апдейтов - в один момент происходит удаление всех триггеров, проекций и процедур и потом восстановление удаленных из скрипта. Вероятно там как раз соединение идет по ISO8859, а не по UTF8. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 14:43 |
|
FB 2.5.5 проблема со столбцами UTF8
|
|||
---|---|---|---|
#18+
svd, непонятно, зачем в таблице половина строк без кодировки (или с дефолтной кодировкой БД), и половина - с UTF8. Такое впечатление, что нечем развлечься. :-) Если делается перевод на utf8, то переводить надо все метаданные. p.s. про приколы типа DELETEFLAG VARCHAR(1) я уж вообще молчу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2021, 15:23 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560059]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
139ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
others: | 234ms |
total: | 502ms |
0 / 0 |