Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
 Re: Стоит ли переходить на Оракл?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Специально для тех, кто хоть на секунду сделает допущение, что г-н немой знает больше бревна
14 дек 08, 19:00    [6568921]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
З.Ы.
ничего личного
со всем уважением, конечно
14 дек 08, 19:03    [6568922]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
немой
Member

Откуда: от туда.
Сообщений: 73
MSDN

Значения типа datetime хранятся внутри компонента SQL Server 2005 Database Engine в виде 4-байтовых целых чисел. Первые четыре байта содержат количество дней до или после даты отсчета: 1 января 1900 года. Дата отсчета является системной датой. Вторые четыре байта содержат текущее значение времени, представленного в виде трехсотых долей секунды, прошедших после полуночи.

Тип данных smalldatetime используется для хранения дат и значений времени с меньшей точностью, чем datetime. В компоненте Database Engine значения типа smalldatetime хранятся в виде 2-байтовых целых чисел. Первые два байта содержат количество дней, прошедших с 1 января 1900 года. В двух следующих байтах хранится количество минут, прошедших после полуночи.

Значения типа datetime округляются в большую сторону до 0,000, 0,003 или 0,007 долей секунд как показано в таблице, представленной ниже.

DECLARE @D1 DATETIME;
SET @D1 = GETDATE();
SELECT 
@d1 as DATA,cast(@D1 as integer) AS INT_DATA, cast(cast(@D1 as integer) as datetime) AS CAST_INT,
cast(@D1 as float) AS FLOAT_DATA,cast(cast(@D1 as float) as datetime) AS CAST_FLOAT

DATA                    INT_DATA    CAST_INT                FLOAT_DATA             CAST_FLOAT
----------------------- ----------- ----------------------- ---------------------- -----------------------
2008-12-14 21:01:49.390 39795       2008-12-15 00:00:00.000 39794,876266088        2008-12-14 21:01:49.390

(1 row(s) affected)

14 дек 08, 19:05    [6568925]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
немой
Member

Откуда: от туда.
Сообщений: 73
Вы быквально предугадали ссылку которую я хотел прокомментировать :)
Имеем 2 4-х байтного поля, как целочисленные.
тип INT, если не ошибаюсь, это 32 битное знаковое значение, т.е. 4 байта.
впрочем, в примере можно взять bigint - 8 байт. т.е. 2 по 4 байта.
выполнение запроса с приведением, должно заполнить младшую и старшую часть, т.к. они по определению в GETDATE() не нулевые.
Однако, видно что идет потеря младшей части в случае с INT (аналогично и с BIGINT), в тоже время, для чисел с плавающей запятой такого не наблюдается (это видно из запроса).
14 дек 08, 19:14    [6568931]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
set nocount on
declare @dt datetime
declare @i int
select @dt = GETDATE(), @i = 0
while @i < 999 begin
select @i+=1
select @dt = DATEADD(MS, 3, @dt)
if @dt <> cast(cast(@dt as float) as datetime)
select 'хе-хе', @dt, cast(cast(@dt as float) as datetime)
end
14 дек 08, 19:25    [6568938]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
немой
Member

Откуда: от туда.
Сообщений: 73
Это только подтверждает высказывание в MSDN что точность кратна 3,33 миллисекунды и не более, сравнивать два числа с плавающей запятой нет смысла (допустимо только неравенство).
4 байта это 4294967296 миллисекунд, в сутках их 86400000, т.е. значительно меньше и следовательно, целочисленное значение позволяет хранить полностью. Ограничения возникают если используется плавающий формат, тогда может гарантироваться только ограниченная разрядность и следовательно погрешность (кратность) декларированная MS вполне объяснима как и погрешность что даёт приведенный Вами код.
14 дек 08, 19:47    [6568955]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
немой
Member

Откуда: от туда.
Сообщений: 73
А вообще, тема конечно интересная.. успели и бревнами пробросаться и т.д. … :)
Но к топику наверно не относится, как думаете?
14 дек 08, 19:52    [6568965]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Зайцев Фёдор
Специально для тех, кто хоть на секунду сделает допущение, что г-н немой знает больше бревна

Зато теперь никто не сделает допущение что Вы уважаете собеседников :(
15 дек 08, 00:31    [6569474]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
SergSuper
Зато теперь никто не сделает допущение что Вы уважаете собеседников :(

Несущих чушь? Ни капельки.
15 дек 08, 01:25    [6569575]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Зайцев Фёдор
SergSuper
Зато теперь никто не сделает допущение что Вы уважаете собеседников :(

Несущих чушь? Ни капельки.

но Вы же тоже чушь написали - DateTime - это вещественный тип, просто он не "ЧПЗ"

блин, ну неужели это действительно такое удовольствие - написать гадость в отношении кого-то?


немой, Вы не учитываете что не все биты из 4-х байт используются
ну и потом попытайтесь объяснить смысл от использования плавающей точки для хранения времени
15 дек 08, 11:09    [6570469]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
SergSuper
DateTime - это вещественный тип

SergSuper
блин, ну неужели это действительно такое удовольствие - написать гадость в отношении кого-то?
нет, не испытываю. кстати, ваша очередь
SergSuper
DateTime - это вещественный тип

правильно ли я понял, 2 целых числа = вещественный тип?
а 3 целых числа? а строка + целое + строка + строка - тоже вещественный тип ?
15 дек 08, 11:20    [6570540]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
locky
Member

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

1.Это Вы о binary и varbinary(n) ?? но это не битовые матрицы, и над этими типами не определены побитовые операторы.
2.По крайней мере, в 2005 этого нет.

3.Очень интересно, буду признателен, если покажите как это можно сделать не прибигая к циклам, курсорам и т.д.
4.А заодно, и пример работы с битовыми матрицами (дп просто - включить 2 бит например)

5.Это Merge.

6.я так же смеюсь над тем, что это больается в проектах как пятое колесо.. Конечно все решается.. Но.. поствте сервер не с тою локалью.. или еще что - и вы обречены на постоянную конвертацию.. Да же если все нормально, простое сравнеие по полю с типом DateTime - геморой, к которому все привыкли.

1. Нет, это я о типе bit
2. в 2008 - есть (будем сравнивать, что в какой версии мускула есть,а чего - нет? ;) )
3. insert ... select ... union. Insert ... values() () ()
4. select 8|2
5. Тоже есть.
6. вы знаете, есть множество способов изобретательно выкручиваться из тех ситуаций, в которые сами же не менее изобретательно попали. За это девелоперов регулярно бьют по пальцам железной линейкой - но, увы и ах, помогает это достаточно слабо.
15 дек 08, 11:58    [6570841]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
locky
Member

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

так вы, любезный, еще и тип datetime любите поприводить к int?
А потом жалуетесь, мол "геморой"?
15 дек 08, 11:59    [6570848]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Зайцев Фёдор
правильно ли я понял, 2 целых числа = вещественный тип?
а 3 целых числа? а строка + целое + строка + строка - тоже вещественный тип ?

интересно, а если бы MS не написала(вполне могла ведь) как она хранит DataTime - было бы оно тогда вещественным?

2 целых числа - это два целых числа если Вы с ними работаете как с двумя целыми числами
если же они образуют, например, комплексное число и Вы с ним работаете, не обращаясь к составляющим по отдельности, то тогда 2 целых числа = комплексное число
а DataTime - вещественный тип, который хранится как число с фиксированной запятой, то что оно состоит из двух целых - дело уже реализации, в конечном счете всё(в т.ч. и строки) хранится в целых числах, просто они по разному интерпритируются
15 дек 08, 12:38    [6571184]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
немой
Для «танкистов» сложно понять наверно, что есть «одним инсертом».. :)


Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
Jul 9 2008 14:43:34
Copyright (c) 1988-2008 Microsoft Corporation
Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)


DECLARE @T TABLE(col1 int, col2 int)

INSERT @T VALUES(1, 2), (3, 4), (5,6)

SELECT * FROM @T


(3 row(s) affected)

col1 col2
----------- -----------
1 2
3 4
5 6

(3 row(s) affected)

Над приведением datetime к int долго смеялсо.
15 дек 08, 12:55    [6571315]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
SergSuper

интересно, а если бы MS не написала(вполне могла ведь) как она хранит DataTime - было бы оно тогда вещественным?

И в этом случае дата осталась бы датой. И уж никак не числом-с-плавающим-многоточием
15 дек 08, 13:09    [6571444]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
mayton
Member

Откуда: loopback
Сообщений: 52980
pkarklin

INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?
15 дек 08, 13:49    [6571773]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
mayton
pkarklin

INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?


Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ...

О массовости я бы не стал здесь говорить, ибо массовую вставку надо делать по-другому.
15 дек 08, 13:53    [6571801]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
pkarklin
mayton
pkarklin

INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?


Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ...
Интересно, а за счет чего быстрее?
15 дек 08, 14:11    [6571955]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SergSuper
pkarklin
mayton
pkarklin

INSERT @T VALUES(1, 2), (3, 4), (5,6)

Это приводит к увеличению производительности при массовых inserts?


Естественно, это будет быстрее, чем INSERT ... SELECT ... UNION ALL SELECT ...
Интересно, а за счет чего быстрее?


Хотя, я погорячился. В такой простой ситуации никакого выигрыша не будет и это всего-навсего синтаксический сахар.
15 дек 08, 14:16    [6571999]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
locky
Member

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

если подходить формально, то выигрышь по производительности таки будет.
Другое дело, что "почувствовать разницу" будет весьма затруднительно.
15 дек 08, 14:19    [6572019]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32893

Hello, locky!
You wrote on Mon, 15 Dec 08 11:19:52 GMT:

locky
l> если подходить формально, то выигрышь по производительности таки будет.
l> Другое дело, что "почувствовать разницу" будет весьма затруднительно.
если таки формально, то зависит от реализации.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

15 дек 08, 14:26    [6572075]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
locky
pkarklin,

если подходить формально, то выигрышь по производительности таки будет.
Другое дело, что "почувствовать разницу" будет весьма затруднительно.


Формально - да, если учитывать "объем" инструкции и время на парсинг. Но планы выполнения будут одинаковые.
15 дек 08, 14:32    [6572127]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
mayton
Member

Откуда: loopback
Сообщений: 52980
pkarklin
Хотя, я погорячился. В такой простой ситуации никакого выигрыша не будет и это всего-навсего синтаксический сахар.

(кивает)
15 дек 08, 14:46    [6572244]     Ответить | Цитировать Сообщить модератору
 Re: Стоит ли переходить на Оракл?  [new]
немой
Member

Откуда: от туда.
Сообщений: 73
SergSuper

немой, Вы не учитываете что не все биты из 4-х байт используются

Да, согласен, в примере с конвертацией к INT это явно выражено (потеря знакового бита) :)

SergSuper

попытайтесь объяснить смысл от использования плавающей точки для хранения времени

Опять согласен..

locky

так вы, любезный, еще и тип datetime любите поприводить к int?
А потом жалуетесь, мол "геморой"?

Нет, что Вы, боже упаси таким извратом заниматься.. Хотя, иной раз приходится это делать - но к СУБД это не относится, скорей к поставщикам протокола обмена.
Это же только примеры.. и в случае с приведением к INT можно было сразу ткнуть носом почему оно не срастается.

PS: я тут не давно, и видать не проникся еще - думал только отвечают (высказывают мнения) на поставленный вопрос. А разбираться у кого что круче не входило в планы - да и бессмысленно, имхо, это.
15 дек 08, 14:51    [6572290]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить