powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
14 сообщений из 14, страница 1 из 1
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725114
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
-- FB:
CREATE TABLE T (ID INTEGER, S VARCHAR(1));

-- PostgreSQL:
CREATE TABLE T (ID INTEGER, S VARCHAR);


в T один миллион записей вида (int, 'A'), индексов нет.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
--FB:
select first 10 * from t order by s;
--
План
PLAN SORT ((T NATURAL))

------ Информация о производительности ------
Время подготовки запроса = 15ms
Время выполнения запроса = 952ms
Среднее время на получение одной записи = 95,20 ms
Current memory = 677 102 136
Max memory = 727 436 256
Memory buffers = 40 960
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 2 006 606

-- PostgreSQL:
select * from t order by s limit 10
--
10 rows fetched (0,56 sec)


Разница почти в 2 раза.

И ещё один тест:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
--FB:
select * from t where s = 'B';
--
План
PLAN (T NATURAL)

------ Информация о производительности ------
Время подготовки запроса = 31ms
Время выполнения запроса = 624ms
Current memory = 677 114 512
Max memory = 727 436 256
Memory buffers = 40 960
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 2 006 606

-- PostgreSQL:
select * from t where s = 'B';
--
Empty set (0,22 sec)


разница почти в 3 раза.

И ещё:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
--FB:
select count(*) from t;
--
План
PLAN (T NATURAL)

------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 406ms
Среднее время на получение одной записи = 406,00 ms
Current memory = 677 113 676
Max memory = 727 436 256
Memory buffers = 40 960
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 2 006 606

-- PostgreSQL:
select count(*) from t;
--
1 rows fetched (0,22 sec)


Разница почти в 2 раза.

Кто готов поддержать дискуссию про ненужность резинового varchar или его неэффективность? :)
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725122
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725131
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterNickDee,

Не спец в Postgre, но http://stackoverflow.com/questions/4848964/postgresql-difference-between-text-and-varchar-character-varying
авторTo sum it all up:
- char(n) – takes too much space when dealing with values shorter than n, and can lead to subtle errors because of adding trailing spaces, plus it is problematic to change the limit
- varchar(n) – it's problematic to change the limit in live environment
- varchar – just like text
- text – for me a winner – over (n) data types because it lacks their problems, and over varchar – because it has distinct name
Странные ребята, тоже предпочитают резиновый варчар :)
С другой стороны скучно там, у них N в varchar(N) не влияет на расход ресурсов. А у нас думать надо, искать компромисс :) А чтобы правильно найти компромисс, нужно знать как оно в кишках устроено, и тесты делать, время тратить и думать, думать, думать. Короче у нас для умных и тех у кого времени много :) Таких в природе мало, так что наплыв юзеров нам не грозит :)
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725197
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeИ ещё:
Код: sql
1.
2.
3.
4.
5.
6.
7.
--FB:
select count(*) from t;
Время выполнения запроса = 406ms
. . .
-- PostgreSQL:
select count(*) from t;
1 rows fetched (0,22 sec)


Разница почти в 2 раза.

Кто готов поддержать дискуссию про ненужность резинового varchar или его неэффективность? :)Здесь задекларированный размер варчара разве играет рояль ? Разница во времени, КМК, просто из-за того, что ФБ делает для каждой записи по два фетча: один в PP, второй в DP.
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725199
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ. а какой там у тебя TempCacheLimit, кстати ?
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725209
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

твой тест никак не показывает преимущество varchar в PG на varchar(1) в FB.

Особенно на примере с count. Можешь вместо varchar попробовать использовать одинаковый тип integer и сравнить разницу.

P.S. На каком FB тест проводил и в какой OC?
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725257
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЗЫ. а какой там у тебя TempCacheLimit, кстати ?
TempCacheLimit = 671088640
С дефолтным временные файлы использовались при сортировке.
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725307
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениствой тест никак не показывает преимущество varchar в PG на varchar(1) в FB.
Мой тест показывает только то, что конкретные запросы с конкретными данными выполнились на моей конкретной машине с конкретно такими результатами. Всё остальное инсинуации сознания.
Симонов ДенисP.S. На каком FB тест проводил и в какой OC?
win7
Firebird 2.5.2 SS, TempCacheLimit = 671088640, DefaultDbCachePages = 40960, PageSize = 16384, CharSet = WIN1251
PostgreSQL 9.3.5-1
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725320
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

с чего ты решил так проверять эффективность безразмерного varchar? Почему ты не думаешь, что на результаты твоего теста могут повлиять вовсе не способ хранения и распаковки данных, а например, подсистема IO или страничный кэш?
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725373
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениса например, подсистема IO или страничный кэш?
По-моему, гораздо больше на них способен повлиять IBE. Уж сколько раз говорилось, что
подобные "тесты" надо проводить в isql...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725384
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

и это тоже. Но я не думаю что влияние его на запрос COUNT(*) велико.
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725407
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисNickDee,

с чего ты решил так проверять эффективность безразмерного varchar? Почему ты не думаешь, что на результаты твоего теста могут повлиять вовсе не способ хранения и распаковки данных, а например, подсистема IO или страничный кэш?
Я думаю что резиновый варчар там на самом деле в два раза медленней. Но т.к. всё остальное в 4-6 раз быстрей, то получается двух-трёх кратный выигрыш :)
Я надеюсь что заинтересованные лица сделают свои, правильные тесты.
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725431
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeЯ надеюсь что заинтересованные лица сделают свои, правильные тесты.
на этом предлагаю дискуссию завершить
...
Рейтинг: 0 / 0
Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
    #38725448
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСимонов Дениса например, подсистема IO или страничный кэш?
По-моему, гораздо больше на них способен повлиять IBE. Уж сколько раз говорилось, что
подобные "тесты" надо проводить в isql...

IO, кэш, IBE... Что только сознание не придумывает, лишь бы для него всё сходилось :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird varchar(1) vs PostgreSQL varchar(без ограничения)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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