Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
DBCC TRACEON (3042,-1)
go
create table Tezd01
(int01 integer not null)

declare @i as int

SET NOCOUNT ON
set @i=10000
while @i>0
Begin
	INSERT Tezd01 
	Select 1234567890
	SET @i=@i-1
end

ALTER TABLE Tezd01
Add int02 integer not null constraint int02def default 1234567890 

ALTER TABLE Tezd01
Add varchar02 varchar(2000) not null constraint varchar02def default 'Master Gigaxer rulez da World 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' 

ALTER TABLE Tezd01
Add bigint02 bigint not null constraint bigint02def default 1234567890123 



ALTER TABLE Tezd01
Add int03 integer not null constraint int03def default 1234567890 

ALTER TABLE Tezd01
Add varchar03 varchar(2000) not null constraint varchar03def default 'Master Gigaxer rulez da World 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' 

ALTER TABLE Tezd01
Add bigint03 bigint not null constraint bigint03def default 1234567890123 



ALTER TABLE Tezd01
Add int04 integer not null constraint int04def default 1234567890 

ALTER TABLE Tezd01
Add varchar04 varchar(2000) not null constraint varchar04def default 'Master Gigaxer rulez da World 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' 

ALTER TABLE Tezd01
Add bigint04 bigint not null constraint bigint04def default 1234567890123 


ALTER TABLE Tezd01
Add varchar05 varchar(2000) not null constraint varchar05def default 'Master Gigaxer rulez da World 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' 


SELECT 'The table filled in with 10k rows ' comments, 
    t.NAME AS TableName,
    p.rows AS RowCounts,
     SUM(a.total_pages) * 8192 AS TotalSpaceBytes, 
    SUM(a.used_pages) * 8192 AS UsedSpaceBytes, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceBytes,

	c.NumberOfColumns,
	c.RowLength as BytesPerRowRequired,
	(SUM(a.used_pages) * 8192)/(p.rows) AS BytesPerRowUsed
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id

JOIN 

	(
		SELECT OBJECT_NAME (id) tablename
			 , COUNT (1)        NumberOfColumns
			 , SUM (length)     RowLength
		FROM   syscolumns
		WHERE OBJECT_NAME (id)='Tezd01'
		GROUP BY OBJECT_NAME (id)
	)c ON c.tablename=t.name


WHERE 
    t.NAME ='Tezd01' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, p.Rows,	c.NumberOfColumns,c.RowLength

SELECT * FROM Tezd01
DROP TABLE Tezd01



Бди!
9 авг 13, 15:28    [14687635]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
9 авг 13, 15:33    [14687692]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Finsman,

Что сказать-то хотели?
9 авг 13, 15:42    [14687760]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
gang
Member

Откуда:
Сообщений: 1394
Finsman,

Продолжайте изучать SQL. Успехов.
9 авг 13, 15:46    [14687794]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
во достали, грамотеи
Guest
товарищ, ну хоть в Word бы засунул свою тему (на предмет проверки орфографии), прежде чем публиковать!
осткое" от слова "жесть" или от слова "жопа", как сам-то считаешь?
9 авг 13, 16:03    [14687964]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
во достали, грамотеи
товарищ, ну хоть в Word бы засунул свою тему (на предмет проверки орфографии), прежде чем публиковать!
осткое" от слова "жесть" или от слова "жопа", как сам-то считаешь?

"Жосткое" от слова "чоткий" ,если кто не в курсе.
9 авг 13, 16:49    [14688288]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
Гость333
Finsman,

Что сказать-то хотели?

8кб*10000 строк должно занимать 80 000кб как минимум,
А размер таблицы значительно меньше.
Таинственная компрессия на лицо.
9 авг 13, 16:53    [14688312]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
gang
Finsman,

Продолжайте изучать SQL. Успехов.

Спосибо. Буду страццо.
9 авг 13, 16:55    [14688321]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
забавно
а если вынести заполнение после альтеров - то всё нормально
9 авг 13, 16:59    [14688356]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Crimean
Member

Откуда:
Сообщений: 13148
updateusage забыли сделать?
9 авг 13, 17:01    [14688369]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Crimean
updateusage забыли сделать?

даже checkdb не помогает :)
9 авг 13, 17:02    [14688374]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
2012 + дефолт
Guest
locky
Crimean
updateusage забыли сделать?

даже checkdb не помогает :)

+1,
это фишка 2012, при добавлении поля с дефолтом его (дефолта) значение заносится только в метаданные таблицы.
9 авг 13, 17:06    [14688394]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Crimean
Member

Откуда:
Сообщений: 13148
locky,

эм.. checkdb как бы и не обязан был помогать..
9 авг 13, 17:08    [14688406]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Crimean
locky,

эм.. checkdb как бы и не обязан был помогать..


Ну, теоретически, если бы это был глюк, то checkdb мог бы найти ошибки в стуктурах
9 авг 13, 17:09    [14688410]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
2012 + дефолт
Guest
Crimean
locky,

эм.. checkdb как бы и не обязан был помогать..

updateusage тоже не поможет
9 авг 13, 17:09    [14688411]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
2012 + дефолт
locky
пропущено...

даже checkdb не помогает :)

+1,
это фишка 2012, при добавлении поля с дефолтом его (дефолта) значение заносится только в метаданные таблицы.


Ухты. А где тынц?
9 авг 13, 17:09    [14688415]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
BOL говорит что "If the new column does not allow null values and the table is not empty, a DEFAULT definition must be added with the new column, and the new column automatically loads with the default value in the new columns in each existing row. "
9 авг 13, 17:13    [14688435]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
locky
2012 + дефолт
пропущено...

+1,
это фишка 2012, при добавлении поля с дефолтом его (дефолта) значение заносится только в метаданные таблицы.


Ухты. А где тынц?


Тынца нет и не будет,
ибо сей секретный алгоритм компрессии используется только внутри команды разработчегов SQL Server,
a Master Gigaxer её тайный член.
9 авг 13, 17:21    [14688486]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
2012 + дефолт
Guest
locky
BOL говорит что "If the new column does not allow null values and the table is not empty, a DEFAULT definition must be added with the new column, and the new column automatically loads with the default value in the new columns in each existing row. "


Вообще что нарыл в бол

http://technet.microsoft.com/ru-ru/library/ms187742.aspx
автор
WITH VALUES
Specifies that the value given in DEFAULT constant_expression is stored in a new column added to existing rows. If the added column allows null values and WITH VALUES is specified, the default value is stored in the new column, added to existing rows. If WITH VALUES is not specified for columns that allow nulls, the value NULL is stored in the new column in existing rows. If the new column does not allow nulls, the default value is stored in new rows regardless of whether WITH VALUES is specified.


но это якобы только для nullable полей а тут not null.
9 авг 13, 17:25    [14688535]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
2012 + дефолт
Guest
2012 + дефолт
locky
BOL говорит что "If the new column does not allow null values and the table is not empty, a DEFAULT definition must be added with the new column, and the new column automatically loads with the default value in the new columns in each existing row. "


Вообще что нарыл в бол

http://technet.microsoft.com/ru-ru/library/ms187742.aspx
автор
WITH VALUES
Specifies that the value given in DEFAULT constant_expression is stored in a new column added to existing rows. If the added column allows null values and WITH VALUES is specified, the default value is stored in the new column, added to existing rows. If WITH VALUES is not specified for columns that allow nulls, the value NULL is stored in the new column in existing rows. If the new column does not allow nulls, the default value is stored in new rows regardless of whether WITH VALUES is specified.


но это якобы только для nullable полей а тут not null.

во, нашел в what's new

http://technet.microsoft.com/ru-ru/library/cc645581.aspx

автор
Adding table columns that contain default values is now a metadata-only operation, so only a brief exclusive lock needs to be taken on the object, typically lasting for less than a second. Long-term exclusive table locks are no longer needed. For information about adding table columns, see Add Columns to a Table (Database Engine).
9 авг 13, 17:29    [14688560]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
2012 + дефолт
locky
BOL говорит что "If the new column does not allow null values and the table is not empty, a DEFAULT definition must be added with the new column, and the new column automatically loads with the default value in the new columns in each existing row. "


Вообще что нарыл в бол

http://technet.microsoft.com/ru-ru/library/ms187742.aspx
автор
WITH VALUES
Specifies that the value given in DEFAULT constant_expression is stored in a new column added to existing rows. If the added column allows null values and WITH VALUES is specified, the default value is stored in the new column, added to existing rows. If WITH VALUES is not specified for columns that allow nulls, the value NULL is stored in the new column in existing rows. If the new column does not allow nulls, the default value is stored in new rows regardless of whether WITH VALUES is specified.


но это якобы только для nullable полей а тут not null.


Моша , это ты штоли?
Скажи Биллу что Оракл готов обменять SUN на этот алгоритм.
9 авг 13, 17:34    [14688603]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
2012 + дефолт
Guest
Finsman
Моша , это ты штоли?
Скажи Биллу что Оракл готов обменять SUN на этот алгоритм.



Для подтверждения своих намерений пусть перечислять на мой яндыкс-кошелек 100 тыщ $ мелкими купурями.
9 авг 13, 17:39    [14688640]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Finsman
Member

Откуда: Da UK.
Сообщений: 404
Вернее он был готов , а теперь после раскрытия тобою алгоритма, не известно как себя поведет.
9 авг 13, 17:39    [14688641]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Glory
Member

Откуда:
Сообщений: 104760
http://msdn.microsoft.com/ru-ru/library/ms190273.aspx

Добавление столбцов NOT NULL в качестве операции в сети

В SQL Server 2012 Enterprise Edition добавление столбца NOT NULL со значением по умолчанию является операцией в сети, если значение по умолчанию является константой времени выполнения. Это значит, что операция выполняется почти мгновенно, независимо от количества строк в таблице. Так происходит потому, что существующие строки в таблице не обновляются в ходе операции. Вместо этого значение по умолчанию сохраняется только в метаданных таблицы, и это значение подставляется по мере необходимости в запросах, обращающихся к этим строкам. Такой режим работы действует автоматически. Для реализации операции в сети достаточно синтаксиса ADD COLUMN. Константа времени выполнения — это выражение, которое имеет одно и то же значение во время выполнения для каждой строки в таблице независимо от ее детерминизма. Например, выражение константы «Временные данные» и системная функция GETUTCDATETIME() являются константами времени выполнения. Функции NEWID() и NEWSEQUENTIALID(), напротив, не являются константами времени выполнения, поскольку для каждой строки в таблице создается уникальное значение. Добавление столбца NOT NULL со значением по умолчанию, которое не является константой времени выполнения, всегда выполняется вне сети, и в течение этой операции накладывается монопольная блокировка (SCH-M).
9 авг 13, 17:39    [14688644]     Ответить | Цитировать Сообщить модератору
 Re: Жосткое сжатие данных в 600!!! раз от Master Gigaxer for chotky patsans only.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Хотя существующие строки ссылаются на значение, хранящееся в метаданных, значение по умолчанию хранится в строке для всех новых строк, которые вставляются без указания другого значения для столбца. Значение по умолчанию, хранящееся в метаданных, перемещается в существующую строку, когда строка обновляется (даже если в инструкции UPDATE не указан фактический столбец), а также когда перестраивается таблица или кластеризованный индекс.
9 авг 13, 17:41    [14688655]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить