|
|
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
В PostgreSQL есть тип varchar без указания длины. По производительности он быстрей чем char(n) и равен varchar(n): http://stackoverflow.com/questions/7320316/why-specify-a-length-for-character-varying-types Нам бы такой тоже не помешал, уже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:21 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDee, опять лень думать какую длину указывать? В FB такой тип есть и называется он BLOB. Производительность при работе с BLOB это уже второй вопрос. Сетевой протокол в FB 3 подкрутят (уж не знаю будут ли блобы быстрее передаваться). А вот с конкатенацией уже сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:27 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
Опять хочется чтобы было по-человечески. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:33 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
Hello, Nickdee! You wrote on 12 августа 2014 г. 14:36:53: Nickdee> Опять хочется чтобы было по-человечески. понятия человечности "здесь тут" и в "там у ***" очень разные. Модератор: Предупреждаю о вреде мата. Тем более в связи с опускающимся железным занавесом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:38 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeхочется чтобы было по-человечески. Звучит как "без необходимости применять мозг". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:39 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисПроизводительность при работе с BLOB это уже второй вопрос.Это делает его использование неприемлимым. Плюс отсутствие индексов по ним. А вот как хочется: http://www.postgresql.org/docs/9.3/static/datatype-character.html The storage requirement for a short string (up to 126 bytes) is 1 byte plus the actual string, which includes the space padding in the case of character. Longer strings have 4 bytes of overhead instead of 1. Long strings are compressed by the system automatically, so the physical requirement on disk might be less. Very long values are also stored in background tables so that they do not interfere with rapid access to shorter column values. In any case, the longest possible character string that can be stored is about 1 GB. (The maximum value that will be allowed for n in the data type declaration is less than that. It wouldn’t be useful to change this because with multibyte character encodings the number of characters and bytes can be quite different. If you desire to store long strings with no specific upper limit, use text or character varying without a length specifier, rather than making up an arbitrary length limit.) Tip: There is no performance difference among these three types, apart from increased storage space when using the blank-padded type, and a few extra CPU cycles to check the length when storing into a length-constrained column. While character(n) has performance advantages in some other database systems, there is no such advantage in PostgreSQL; in fact character(n) is usually the slowest of the three because of its additional storage costs. In most situations text or character varying should be used instead . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:43 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeTip: There is no performance difference among these three types, apart from increased storage space when using the blank-padded type, and a few extra CPU cycles to check the length when storing into a length-constrained column. Создай две таблицы: Код: plaintext 1. 2. Далее сделай какой-нить запрос с сортировкой и натрави его сначала на t1, затем на t2 (по-нескольку раз). Будет ли разница в произв-сти ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:09 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeThere is no performance difference among these three types, apart from increased storage space when using the blank-padded type, and a few extra CPU cycles to check the length when storing into a length-constrained column. Маркетинговое враньё. Читать данные, уложенные на отдельных страницах по определению не может быть так же быстро. И, кстати, ты уже пробовал построить по нему индекс?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:09 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovNickDeeхочется чтобы было по-человечески. Звучит как "без необходимости применять мозг". Ну допустим для ФИО я знаю что оно в 99.9999% случаев в 100 символов войдёт, GUID стопроцентно войдёт в 32. А вот во сколько символов уложится число произвольной длины уже не знаю (я понимаю, что хранить числа эффективней в бинарном виде). Возможно хватит varchar(1000), а возможно и varchar(32000) не хватит. Но в 99.9% случаев там будут лежать числа от 1 до 100 цифр. Пользователю предложим смириться с просадкой производительности у FB при работе с длинными варчарами? Или если у него вдруг иногда будут числа под сто тыщ цифр, то предложим ему BLOB? Но тогда он бонусом получит ещё просадку, в том числе и для коротких значений. Или просто предложим ему не хранить в БД длинные числа, чтобы производительность не страдала? :) Имхо должно быть так, чтобы на одних и тех же данных движок вёл себя одинаково, независимо от того какой там N у варчара прописан, и прописан ли. Это будет архитектурно-правильная позиция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:19 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDee, на кой тебе такие числа? Ты реально оперируешь с числами длинной 1000 цифр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:23 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeПользователю предложим смириться с просадкой производительности у FB при работе с длинными варчарами?В ссылке, которую вы привели разница накладных расходов между "длинными" и "короткими" varchar - три байта. Есть пример, который демонстрирует значимость этой разницы? Окромя "если три байта умножить на миллиард - будет три гигабайта"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:24 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDee, и самое интересное как с такими числами ты будешь производить различные операции (сложение, вычитание, умножение ...). Через ХП? Не боишься просадки производительности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:25 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeВ PostgreSQL есть тип varchar без указания длины. По производительности он быстрей чем char(n) и равен varchar(n): ты только забыл, что раньше его длина все же была ограничена размером страницы, который у PG был (?) фиксированный, 8к. Вроде бы в свежих версиях уже это обошли, вопрос в том, как. В доке по постгресу эта фигня не упоминалась, люди просто напарывались на макс длину "безразмерных строк" в 8к. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:36 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovМаркетинговое враньё. Читать данные, уложенные на отдельных страницах по определению не может быть так же быстро. кстати, да, к сожалению, дока по PG этим страдает (см выше, и вроде есть другие штуки, которые тупо умалчиваются). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:38 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
kdvDimitry SibiryakovМаркетинговое враньё. Читать данные, уложенные на отдельных страницах по определению не может быть так же быстро. кстати, да, к сожалению, дока по PG этим страдает (см выше, и вроде есть другие штуки, которые тупо умалчиваются). In any case, the longest possible character string that can be stored is about 1 GB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 15:51 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeIn any case, the longest possible character string that can be stored is about 1 GB. Так ты смог проиндексировать эту гигабайтную строку или нет? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:00 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeесли у него вдруг иногда будут числа под сто тыщ цифр, то предложим ему BLOB? updatable view уже вышли из моды ? Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:00 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
sql.ru рекоммендует text вместо varchar(n). Короче потестировать нужно. Хотя постгревцы наверняка за 10 лет уже протестировали это. Хотя с другой стороны не факт, может они документации на слово верят, и втихую используют text не зная что он "на самом деле дико медленный, в чём неоднократно убеждались парни из FB-тусовки на примере использования движка FB" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:01 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDee, тебе Dimitry Sibiryakov правильный вопрос задаёт, проиндексируй строку размером в гигабайт и посмотри, что будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:13 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
ТаблоидNickDee, а ты зачем сделал вид, что ничего не увидел ? Я увидел :) Но я с postgreSQL только вчера начал, причём с документации. Сегодня-завтра может руки дойдут до ознакомления с тулзами и генерации тестовых данных с их помощью. А может и не дойдут так быстро. Вот тут есть кой-какие бенчмарки: http://www.depesz.com/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/ . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:17 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
Hello, Nickdee! You wrote on 12 августа 2014 г. 16:19:30: Nickdee> Но я с postgreSQL только вчера начал, причём с документации. > Сегодня-завтра может руки дойдут до ознакомления с тулзами и генерации > тестовых данных с их помощью. А может и не дойдут так быстро. с нетерпением ждём очередных "открытий чЮдных" и фичереквестов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:21 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
МимопроходящийHello, Nickdee! You wrote on 12 августа 2014 г. 16:19:30: с нетерпением ждём очередных "открытий чЮдных" и фичереквестов. только не это. Как по мне PG свалка всяких фич. Много полезных, но часть (их довольно много) на фиг некому не сдалось, кроме разве что экспериментаторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:36 |
|
||
|
Опять про varchar(n)
|
|||
|---|---|---|---|
|
#18+
NickDeeDimitry Sibiryakovпропущено... Звучит как "без необходимости применять мозг". Ну допустим для ФИО я знаю что оно в 99.9999% случаев в 100 символов войдёт, GUID стопроцентно войдёт в 32. А вот во сколько символов уложится число произвольной длины уже не знаю (я понимаю, что хранить числа эффективней в бинарном виде). Возможно хватит varchar(1000), а возможно и varchar(32000) не хватит. Но в 99.9% случаев там будут лежать числа от 1 до 100 цифр.что за числа такие, по 100 цифр? Вообще-то любая типизация данных (а задать макс. длину стринга - это тоже типизация), это в некотором роде ограничитель ошибок входных данных. Если данные - целое число, то пользователь никак не сможет ввести в БД символы. Если данные - ФИО, то попытка введения более 100 символов, очевидно будет ошибкой. Если надо ввести *большие* числа, то разработчику надо обязательно узнать, что это за числа, и их максимальный размер. Потому что, вообще говоря, некоторые большие числа нельзя записать не то что в базу данных, но и на существующие носители. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=90&tid=1563372]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
98ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 387ms |

| 0 / 0 |
