Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / снова varchar(max) vs text / 23 сообщений из 23, страница 1 из 1
27.09.2013, 19:08
    #38410350
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Есть старая таблица с полями text и image.

Средняя / максимальная длинна данных: 5 кб / 120 кб.
Размер таблицы: 80 ГБ.
Server: SQL 2005 Enterprise

Какие преемущества / проблемы можно получить пересоздав таблицу с полями varchar(max) и varbinary(max)?

ЗЫ: клиентские приложения работают в обоиз вариантах.
...
Рейтинг: 0 / 0
27.09.2013, 21:11
    #38410455
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsКакие преемущества / проблемы можно получить пересоздав таблицу с полями varchar(max) и varbinary(max)?Только польза, никаких недостатков.
...
Рейтинг: 0 / 0
27.09.2013, 21:13
    #38410459
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
alexeyvgAlexander UsКакие преемущества / проблемы можно получить пересоздав таблицу с полями varchar(max) и varbinary(max)?Только польза, никаких недостатков.Например http://www.sql.ru/forum/1048061/indexed-view-pole-ntext-preobrazuetsya-v-nvarchar-256-no-sql-etogo-ne-zamechaet
...
Рейтинг: 0 / 0
28.09.2013, 11:49
    #38410620
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
alexeyvg, спасибо.


Есть ли ещё преемущества / проблемы?

Начиная с SQL2005 MS рекомендует переходить с text на varchar(max), так как text устарел.
Но сейчас уже SQL2012 а тип text и ныне остаётся в Sql Server.

Я бы хотел перевести существующие таблицы на varchar(max) но для этого нужно чётко представлять как выгоды от такого шага, так и возможные негативные последствия.

Есть ли у лого опыт такого переводя для больших( > 10 GB ) таблиц?
Как это сказалось на производительности?
...
Рейтинг: 0 / 0
28.09.2013, 12:36
    #38410634
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander Usalexeyvg, спасибо.


Есть ли ещё преемущества / проблемы?

Начиная с SQL2005 MS рекомендует переходить с text на varchar(max), так как text устарел.
Но сейчас уже SQL2012 а тип text и ныне остаётся в Sql Server.

Я бы хотел перевести существующие таблицы на varchar(max) но для этого нужно чётко представлять как выгоды от такого шага, так и возможные негативные последствия.

Есть ли у лого опыт такого переводя для больших( > 10 GB ) таблиц?
Как это сказалось на производительности?

Но сейчас уже SQL2014 а тип text и ныне остаётся в Sql Server.
...
Рейтинг: 0 / 0
30.09.2013, 18:38
    #38412241
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
идей больше нет?
...
Рейтинг: 0 / 0
30.09.2013, 18:47
    #38412256
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander Us,

сравните список строковых функций, которые можно использовать с text и c varchar(max). те же LEN() и LEFT()
...
Рейтинг: 0 / 0
30.09.2013, 19:42
    #38412296
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Shakill,
спасибо.

Первое обобщение:
- с text не сохдать индексированный вид,
- есть различия в использовании некоторых функций len/datalength и.т.д.
- с text/image не работают операторы UNION, DESTINCT, EXCEPT

Остаётся неясным:
- есть ли разница в производительности


Кто то может дополнить список?
...
Рейтинг: 0 / 0
30.09.2013, 19:46
    #38412300
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander Us - есть различия в использовании некоторых функций len/datalength и.т.д.не то что есть различия, а некоторые функции вообще не работают с text, то есть этот тип просто неудобен по сравнению с varchar(max)
...
Рейтинг: 0 / 0
30.09.2013, 20:08
    #38412313
Гость333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsКто то может дополнить список?
С типом данных varchar(max) не работают инструкции, предназначенные для text: TEXTPTR, READTEXT, WRITETEXT, UPDATETEXT.
...
Рейтинг: 0 / 0
01.10.2013, 10:38
    #38412662
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsКто то может дополнить список?
This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use varchar(max), nvarchar(max) and varbinary(max) data types instead.

По-моему этого более чем достаточно для отказа от text
...
Рейтинг: 0 / 0
01.10.2013, 10:54
    #38412688
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Glory,

Безусловно, этого достаточно для отказа от типа "текст" в новых разработках.
Сейчас же речь больше о том, имеет ли смысл переводить старые таблицы с text на varchar(max) и с image на verbinary(max).
И к каким последствиям это может привести.

Цитата, на которую Вы ссылаетесь появилась ещё в СКЛ 2005.
Но тип "текст" до сих пор не удалён.
Возникает вопрос "почему"?
...
Рейтинг: 0 / 0
01.10.2013, 11:00
    #38412702
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsСейчас же речь больше о том, имеет ли смысл переводить старые таблицы с text на varchar(max) и с image на verbinary(max).
И к каким последствиям это может привести.
К таким же, как и изменения на любой другой тип данных.
На сервере это изменение никак не скажется. А ваши серверный код и клиентские приложения придется тестировать.

Alexander UsЦитата, на которую Вы ссылаетесь появилась ещё в СКЛ 2005.
Но тип "текст" до сих пор не удалён.
Возникает вопрос "почему"?
Не хотят терять таких, как вы. Иначе вы не купите апгрейд на следующую версию
...
Рейтинг: 0 / 0
01.10.2013, 11:44
    #38412787
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
GloryНа сервере это изменение никак не скажется.Сомневаюсь, что никак:

При удалении старых данных методом обнуления "update ... set ... = NULL" в столбцах "text" столкнулся с таким эффектом: освобождённое дисковое пространство остаётся "висеть" и может быть снова занято только данными типа "text".
Со столбцами "varchar(max)" пока такого эффекта не заметил.
Так что в данном контексте изменение скажется положительно.

GloryНе хотят терять таких, как вы. Иначе вы не купите апгрейд на следующую версию
Чтобы покупали апгрейд на следующую версию было бы разумным опубликовать список различий varchar(max) vs. text,
раз уж один тип должен заменить другой.
...
Рейтинг: 0 / 0
01.10.2013, 11:50
    #38412799
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsGloryНа сервере это изменение никак не скажется.Сомневаюсь, что никак:

При удалении старых данных методом обнуления "update ... set ... = NULL" в столбцах "text" столкнулся с таким эффектом: освобождённое дисковое пространство остаётся "висеть" и может быть снова занято только данными типа "text".
Со столбцами "varchar(max)" пока такого эффекта не заметил.
Так что в данном контексте изменение скажется положительно.
Автор цитаты наверное не слышал никогда про удаление полей переменной длины. Особенно из середины заполненных страниц данных.

Alexander UsЧтобы покупали апгрейд на следующую версию было бы разумным опубликовать список различий varchar(max) vs. text,
раз уж один тип должен заменить другой.
Если вам _нужно_ менять тип полей, то вам все рано придется все тестировать. И от типа поля это не зависит.
...
Рейтинг: 0 / 0
01.10.2013, 11:56
    #38412808
Гость333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsПри удалении старых данных методом обнуления "update ... set ... = NULL" в столбцах "text" столкнулся с таким эффектом: освобождённое дисковое пространство остаётся "висеть" и может быть снова занято только данными типа "text".
Со столбцами "varchar(max)" пока такого эффекта не заметил.
Репро в студию.
...
Рейтинг: 0 / 0
01.10.2013, 11:57
    #38412811
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsЧтобы покупали апгрейд на следующую версию было бы разумным опубликовать список различий varchar(max) vs. text, раз уж один тип должен заменить другой.вот, например Using Large-Value Data Types
...
Рейтинг: 0 / 0
01.10.2013, 14:33
    #38413122
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Гость333Репро в студию.Извините, если немного тыкаю пальцем в небо: сейчас некогда создать репро...

Кажется, данный/похожий случай был описан здесь:
DBCC SHRINKFILE and SHRINKDATABASE commands may not work because of sparsely populated text, ntext, or image columns

и здесь:
Reclaiming deleted but unused LOB space in SQL 2005

У меня было так: удалил ("update ... set ... = NULL") старые данные в столбце "text" и не смог вернуть освободившееся место системе.
...
Рейтинг: 0 / 0
01.10.2013, 14:43
    #38413136
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsУ меня было так: удалил ("update ... set ... = NULL") старые данные в столбце "text" и не смог вернуть освободившееся место системе.
Ну так "я не смог" вовсе не означает, что заявленное вами изменение типа данных поля, как то скажется на сервере. Фрагментация - это обыденное явление
...
Рейтинг: 0 / 0
01.10.2013, 15:24
    #38413204
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
GloryНу так "я не смог" вовсе не означает, что заявленное вами изменение типа данных поля, как то скажется на сервере. Фрагментация - это обыденное явление
Полагаю, изменение на varchar(max) скажется в положительную сторону.
Данная фрагментация описана толко для типов text и image: FIX: TEXT/IMAGE Data Storage Space Not Reclaimed Correctly

А судя по названию статьи и способу решения проблемы (перезаливка данных с BCP) явление это не совсем "обыденное".
Я бы отнёс перезаливку данных с BCP к категории "крайних" решений.

Если Вы в данной ситуации "смогли" без перезаливки данных,
поделитесь пожалуйста опытом.
...
Рейтинг: 0 / 0
01.10.2013, 15:29
    #38413210
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsПолагаю, изменение на varchar(max) скажется в положительную сторону.
Вы меняете ради замены ? Или для того, чтобы скучно не было ?

Alexander UsДанная фрагментация описана толко для типов text и image: FIX: TEXT/IMAGE Data Storage Space Not Reclaimed Correctly
А вы это видели ?
APPLIES TO
Microsoft SQL Server 7.0 Standard Edition

Alexander UsЕсли Вы в данной ситуации "смогли" без перезаливки данных,
поделитесь пожалуйста опытом.
Сначала вы говорили, что вообще не можете освободить место. Теперь вам уже надо "одной кнопкой"
...
Рейтинг: 0 / 0
01.10.2013, 15:42
    #38413231
Гость333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Alexander UsКажется, данный/похожий случай был описан здесь:
DBCC SHRINKFILE and SHRINKDATABASE commands may not work because of sparsely populated text, ntext, or image columns
support.microsoft.comAPPLIES TO
•Microsoft SQL Server 2000 Standard Edition
•Microsoft SQL Server 7.0 Standard Edition
Как-то старовато :)

Alexander Usи здесь:
Reclaiming deleted but unused LOB space in SQL 2005
Но по этой ссылке вроде не говорится "замените эти типы данных на varchar(max), nvarchar(max) и varbinary(max), и всё будет в шоколаде"? (особо не вчитывался, т.к. "многабукф" :)

Alexander UsУ меня было так: удалил ("update ... set ... = NULL") старые данные в столбце "text" и не смог вернуть освободившееся место системе.
Охотно верю!
А потом создали точно такую же таблицу, но с типом varchar(max) вместо text, сделали такой же апдейт, и место освободилось?
А какие для этой таблицы были, к примеру, значения опций text in row и large value types out of row?
...
Рейтинг: 0 / 0
01.10.2013, 17:55
    #38413432
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
снова varchar(max) vs text
Гость333А какие для этой таблицы были, к примеру, значения опций text in row и large value types out of row?
такие:
Код: sql
1.
SELECT [name] AS tablename, large_value_types_out_of_row FROM sys.tables -- =>  0 


Код: sql
1.
select OBJECTPROPERTY(object_id('......'),'TableTextInRowLimit')  -- => 0
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / снова varchar(max) vs text / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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