powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / База в UTF8 таблица 50+ полей ~72000 byte
25 сообщений из 39, страница 1 из 2
База в UTF8 таблица 50+ полей ~72000 byte
    #39850677
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пытаюсь создать таблицу с кол-вом полей 65

Если win1251, то все норм, если utf8, то не дает пишет (это логично):

авторStatement failed, SQLSTATE = 54000
unsuccessful metadata update
-new record size of 72162 bytes is too big
-TABLE TABLE1

Я так понял это из-за ограничения - Максимальный размер строки - 64kb ?

Вопросы:
- Правильно ли я понимаю причину?
- Что делать (или только делить таблицу на несколько)?
- Поможет ли увеличение размера страницы?

текущий PAGE_SIZE 4096
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850685
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

- да
- правильно проектировать базу данных
- нет

З.Ы. Размер страницы увеличь в любом случае, например до 8K.
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850687
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно увеличить размер в уже существующей базе?
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850690
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

можно через backup/restore
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850696
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

Укороти отдельные строковые поля до реально нужных размеров.
Для длинных полей используй тип "блоб текст" - все равно по таким полям поиск обычно идёт без индексов ("похож", "включает").
Разбей табличку на несколько 1:1.
Вынеси логически связанные данные в отдельную сущность, https://support.microsoft.com/ru-ru/help/283878/description-of-the-database-normalization-basics
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850698
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

еще можно на другую СУБД перейти. У посгтре, например, размер поля до 1ГБ, а размер записи - до 1.6ТБ.
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850700
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или просто на четвёртую версию. Хотя я не помню какой из лимитов там снят: на запись в
таблице или на результат выборки. Может даже и оба два.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850702
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

Переходить никак не хочется. Странно, что у FB не так, как у постгре
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850703
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

4 же ещё нет... Ждём )
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850704
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу или просто на четвёртую версию. Хотя я не помню какой из лимитов там снят: на запись в
таблице или на результат выборки. Может даже и оба два.

Вроде как оба прежние, не? Max Page sized на ODS 13 был до 32 КБ увеличен, да длина идентификаторов.
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850706
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёВроде как оба прежние, не?

Нет. Выборка там точно может быть шире 64к, ибо я это тестил. А вот насчёт записи в
таблице я не уверен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850707
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

выборка > 64K сделана ещё в тройке. Ты же сам там кое-что правил
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850710
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёразмер записи - до 1.6ТБ.
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850711
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxПодскажите, пытаюсь создать таблицу с кол-вом полей 65Дальше можно не читать
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850712
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladantoxПодскажите, пытаюсь создать таблицу с кол-вом полей 65Дальше можно не читать
Чего так?
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850713
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovёёёёёВроде как оба прежние, не?

Нет. Выборка там точно может быть шире 64к, ибо я это тестил. А вот насчёт записи в
таблице я не уверен.


Не получается больше 63 полей создать, на снапшоте проверил.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
execute block
(cnt int = :cnt)
as
declare variable S varchar(32000);
declare variable FCNT int;
begin
  S = 'create table t' || CNT || '(';

  FCNT = 1;
  while (FCNT <= CNT) do
  begin
    S = S || 'f' || FCNT || ' char(1024)';
    if (FCNT < CNT) then
      S = S || ',';
    FCNT = FCNT + 1;
  end
  S = S || ');';
  execute statement S;
end;
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850714
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

речь о ширине резалтсета, а не о количестве полей или размере записей
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850715
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёhvladпропущено...
Дальше можно не читать
Чего так?Тут всё сказано 21951774
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850740
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladantoxПодскажите, пытаюсь создать таблицу с кол-вом полей 65Дальше можно не читать

Предрассудки )

Прекрасно удобнее 65, значит так и должно быть! Разбивать на таблицы 1:1 не вижу смысла никакого. В таблице уникальные характеристики одного объекта, зачем выносить под разным таблицам!?
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850741
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*мне удобнее 65...
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850742
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladёёёёёпропущено...

Чего так?Тут всё сказано 21951774

Ну, остальное мысли на тему )
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850743
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

А чем вызвана необходимость такого минимального ограничения?
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850779
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxА чем вызвана необходимость такого минимального ограничения?

ещё раз. Нет такого ограничения на количество столбцов в таблице. Есть ограничения на максимальную длину записи в 64 К. Ограничение это появилось ещё во времена Interbase. Чем это продиктовано хз, но наверное были причины.

antoxРазбивать на таблицы 1:1 не вижу смысла никакого. В таблице уникальные характеристики одного объекта, зачем выносить под разным таблицам!?

и все столбцы конечно же символьного типа? Что прям без ссылок на другие таблицы (справочников нет)?
Или у вас там всякая чепуха типа VARCHAR(10000)?
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39850793
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxРазбивать на таблицы 1:1 не вижу смысла никакого. В таблице уникальные характеристики одного объекта, зачем выносить под разным таблицам!?
В практике проектирования есть такая штука. Если в таблице получается дофигища столбцов, то их начинают делить на "первичные", т.е. важные, и "вторичные", т.е. не важные. Например, "первичные" это те, которые пользователь желает увидеть в первую очередь.
"Вторичные" - которые для пользователя не так интересны, и смотреть их можно, например, при просмотре записи в виде "формы".
(сюда обычно относятся всякие блобы, здоровенные варчары, и т.д.).
К "вторичным" в том числе относятся стольбцы, которые могут на этапе ввода иметь пустое умолчательное значение или null.

Так вот. "Вторичные" столбцы выносятся в отдельную таблицу, связанную с основной 1:1.
Это не совсем про "лимит записи в 64к", а про производительность.
Например, если речь идет о таблице с регистрационной информацией юзера на каком-нибудь сервисе, то первичными данными являются ID, nickname, плюс еще что-то. Вторичными являются адрес, телефон, город, пол, ФИО, и прочая информация, которая в некоторых случаях может быть не заполнена вообще никогда. Это означает, что в основной таблице запись для такого пользователя будет, а во "вторичной" таблице соответствующей записи не будет, экономится место.
И, первичная таблица получается "короткой", к ней быстро идут обращения, быстрее идут ее джойны с другими таблицами, и т.д.
...
Рейтинг: 0 / 0
База в UTF8 таблица 50+ полей ~72000 byte
    #39851008
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще бывает параллельное занесение данных разными операторами (роботами, датчиками) на одну сущность, тогда выгоднее разнести в разные таблицы чтобы уйти от дэдлоков.

Еще бывают необязательные атрибуты, если, напрмер, атрибут должен быть у 10% записей, выгодней вынести его в пристыкованную табличку и собрать обратно вьюхой.

Апдейтебл вьюху уже предлагали?

antoxмне удобнее 65...Есть у нас такое тяжелое наследие, хорошего мало, по факту ни разу не удобно.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / База в UTF8 таблица 50+ полей ~72000 byte
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]