Ограничения символьных типов

We use cookies. Read the Privacy and Cookie Policy

Ограничения символьных типов

Ограничения многобайтовых наборов символов

Важно быть в курсе того, как многобайтовые наборы символов влияют на размеры текстовых элементов, особенно имеющих переменный размер. Например, в наборе символов UNICODE FSS даже 256-символьный столбец будет иметь больший размер - потенциально 770 байт- как для хранения данных, так и для поиска. Дальше в этой главе будет много сказано об осторожности, которую вы должны проявить, решая вопрос о хранении текстов для многобайтовых наборов символов.

Ограничения индексов

При решении вопросов размера, набора символов и последовательности сортировки для символьного столбца вам нужно убедиться, что индексируемые столбцы этих типов достаточно ограничены по размеру. В настоящее время (версия 1.5) общий размер любого индекса не может превышать 252 байта- заметьте, байтов, а не символов. Многобайтовые и многие более сложные однобайтовые наборы символов используют много больше байтов, чем простые наборы символов. Многосегментные индексы используют дополнительные байты, как и последовательности сортировки. Просчитайте количество байтов в процессе проектирования!

Подробности см. в главе 18, обратите внимание на разделы о наборах символов и последовательностях сортировки далее в этой главе.

Использование памяти клиента

Программы клиента будут выделять память для хранения копий строк, которые они считали из базы данных. Многие уровни интерфейсов выделяют достаточное количество ресурсов для максимального (т. е. определенного) размера значений столбцов фиксированной и переменной длины, даже если фактически никакие данные не сохранены в таком размере. Буферизация большого количества строк может использовать слишком большой объем памяти, и пользователи будут жаловаться на задержки при обновлении экрана и на потерю соединения.

Рассмотрим, например, какое влияние окажет на рабочую станцию запрос, возвращающий 1024 строки, каждая из которых содержит один столбец, объявленный как VARCHAR(1024) . Даже с самым "скромным" набором символов этого столбца потребуется, по меньшей мере, 1 Мбайт памяти клиента. Для столбца Unicode умножьте эту величину на три.