|
|
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
Собственно сабж. Если в природе есть varchar(255), то на какой ляд разрабы mysql придумали такой тип как tinytext? Ну или можно ещё так сформулировать вопрос: как гипотетически может выглядеть ситуация, где использование tinytext реально выгоднее, круче, необходимее, чем varchar(255)?? ведь если я правильно все понял, что varchar(255) может все то же самое, что и tinytext, но + ещё тянет null/notnull и default value может быть если tinytext все хранит во внешней копилке, то в той копилке происходит оптимизация и хранятся только уникальные строки и тем самым там, где varchar(255) будет 1 млн. записей хранить слово "пример", то tinytext на миллионе записей будет хранить только 1 строку "пример"+ миллион указателей на эту строчку, а это типа экономия памяти в 8 раз. Может в этом сакральный смысл tinytext? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 20:42:46 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
Вы опять ловите тараканов в темной комнате :) Lumixможет быть если tinytext все хранит во внешней копилке, то в той копилке происходит оптимизация и хранятся только уникальные строки и тем самым там, где varchar(255) будет 1 млн. записей хранить слово "пример", то tinytext на миллионе записей будет хранить только 1 строку "пример"+ миллион указателей на эту строчку, а это типа экономия памяти в 8 раз. Может в этом сакральный смысл tinytext?Нет. Никакой такой оптимизации нет. NULL, кстати, они вполне могут быть, насколько я помню. Основная фича BLOB/TEXT заключается в том, что они отдельно хранятся. Это может быть полезно, например, в тех случаях, когда запрос требует полного сканирования таблицы, но конкретно это поле ему не требуется. Тогда объем данных, читаемых с диска, будет меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 21:38:21 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
miksoftОсновная фича BLOB/TEXT заключается в том, что они отдельно хранятся. Это может быть полезно, например, в тех случаях, когда запрос требует полного сканирования таблицы, но конкретно это поле ему не требуется. Тогда объем данных, читаемых с диска, будет меньше.Относится ли оно так же к случаю, когда в процессе выполнения запроса будет создана временная таблица? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 22:22:58 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
vklemiksoftОсновная фича BLOB/TEXT заключается в том, что они отдельно хранятся. Это может быть полезно, например, в тех случаях, когда запрос требует полного сканирования таблицы, но конкретно это поле ему не требуется. Тогда объем данных, читаемых с диска, будет меньше.Относится ли оно так же к случаю, когда в процессе выполнения запроса будет создана временная таблица?А вот с временными таблицами там все, наоборот, печально. Они безусловно валятся на диск. http://dev.mysql.com/doc/refman/5.5/en/blob.html Instances of BLOB or TEXT columns in the result of a query that is processed using a temporary table causes the server to use a table on disk rather than in memory because the MEMORY storage engine does not support those data types (see Section 8.4.4, “How MySQL Uses Internal Temporary Tables”). Use of disk incurs a performance penalty, so include BLOB or TEXT columns in the query result only if they are really needed. For example, avoid using SELECT *, which selects all columns. Впрочем, при умеренной нагрузке и избытке оперативки, это лечится с помощью tmpfs. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 22:58:50 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
miksoftА вот с временными таблицами там все, наоборот, печально. Они безусловно валятся на диск.Это, как я понимаю, относится к случаю, если поля типа BLOB/TEXT включены в результат запроса или использованы в группировке/условии. Или же, в любом случае временная таблица будет требовать выгрузки на диск, даже если эти поля не использованы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 00:54:41 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
miksoftОсновная фича BLOB/TEXT заключается в том, что они отдельно хранятся. Это может быть полезно, например, в тех случаях, когда запрос требует полного сканирования таблицы, но конкретно это поле ему не требуется. Тогда объем данных, читаемых с диска, будет меньше. Прикольная инфа!! Я знал, что text храниться за пределами таблицы, но до сих пор мне в голову не приходило, что с помощью этого можно влиять на скорость where-секции. PS. про тараканы согласен :) кстати, в первый раз встречаю сочетание тараканы в темной комнате. Я знаю есть выражение "это все равно, что искать черную кошку в темной комнате" и это выражение является поэтической формой бытового выражения "хрен найдешь", но чтобы тараканы в темной комнате - это некий новый образ. :-) но прикольный так-то))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 00:55:15 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
vklemiksoftА вот с временными таблицами там все, наоборот, печально. Они безусловно валятся на диск.Это, как я понимаю, относится к случаю, если поля типа BLOB/TEXT включены в результат запроса или использованы в группировке/условии.Именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 07:34:12 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
Основная фича BLOB/TEXT заключается в том, что они отдельно хранятся И соответственно их размер не влияет на maximum row size, который равен 65к. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 13:47:55 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
LumixСобственно сабж. Если в природе есть varchar(255), то на какой ляд разрабы mysql придумали такой тип как tinytext? Когда писали MySQL, уже был ANSI/ISO-стандарт SQL. MySQL-левцы видимо очень хотели реализовать стандарт целиком. Я думаю, просто тип есть в стандарте, вот его и реализовали. К тому же по архитектурной задумке MySQL ядро не может знать о преимуществах или недостатках хранения определённых типов -- этим ведают engine-ы. Может и поэтому они реализовали все типы которые только можно было реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 20:54:50 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
MasterZiv, а, теперь понятно. Я, кстати, не знал что есть какие-то стандарты sql. Я думал, что компании соревнуются межу собой и хотя select * from t where id = 1 работает у всех одинаково, но как только доходит до реальной разработки все равно финальный sql rкод, особенно сложный получается под каждую субд свой... точно так же как со стандартами С++. Хотя он и есть, но у каждого компилятора все равно какие-то свои особенности. Но видимо, стандарты для чего-то другого существуют. Для общей организации, для системного порядка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2015, 19:19:29 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
LumixЯ, кстати, не знал что есть какие-то стандарты sql. https://ru.wikipedia.org/wiki/SQL-92 и далее по списку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2015, 19:22:36 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
miksoft, я просмотрел и мне почему-то кажется, что для обычных прикладных программистов подобные документы бесполезны... по-моему эти документы рассчитаны на разрабов самих СУБД, а не на кодеров, которые используют субд как инструмент... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2015, 20:19:18 |
|
||
|
Зачем существует tinytext
|
|||
|---|---|---|---|
|
#18+
Lumixмне почему-то кажется, что для обычных прикладных программистов подобные документы бесполезныВ целом да, обычно документация по конкретной СУБД покрывает собой описание SQL, так что читать отдельно стандарт смысла нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2015, 22:00:56 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39045328&tid=1832728]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 407ms |

| 0 / 0 |
