Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 10 11 12 13 14 [15] 16 17 18 19 .. 54   вперед  Ctrl
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
pkarklin
Чушь собачья какая-то. Дифф бэкап содержит страницы (8К), которые изменялись с момента последнего полного бэкапа.
Чушь, не чушь, но как вы определите, что какая-то страница изменилась? Правильно, ее нужно прочитать и посмотреть в заголовке признак изменения.
Т.е. прочитать придется все 100% базы данных, но в backup попадут только изменившиеся данные.

Существуют специальные страницы для отслеживания изменившихся экстентов, под названием DCM (Differential Changed Map): http://technet.microsoft.com/en-us/library/ms190950(v=sql.105).aspx. Каждая страница DCM "обслуживает" 64000 экстентов, или почти 4 Гб данных. Никакого удвоения IO от использования DCM, естественно, не происходит.
14 окт 13, 00:34    [14964225]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
pkarklin
Отнюдь не новая.
Automatic page repair is supported by database mirroring and by AlwaysOn Availability Groups. http://technet.microsoft.com/en-us/library/bb677167(v=sql.110).aspx
И где там речь про 2005 год? Вижу, что в SQL Server 2008 это было, но это ведь не 2005 год. SQL Server 2008 RTM вышел в августе 2008.

Действительно, фича "Automatic page repair" появилась в MSSQL 2008, а анонсирована была в 2007 году.

Само зеркалирование появилось в MSSQL 2005 не без некоторого скрипа
Microsoft
If you are not running SQL Server 2005 with SP1 or later, database mirroring should not be used in production environments. Microsoft support services will not support databases or applications that use database mirroring from the RTM release.

Но это так, уже история.
14 окт 13, 00:51    [14964273]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54784

Гость333
Никакого удвоения IO от использования DCM, естественно, не происходит.

Т.е. эти страницы вообще не пишутся на диск?

Posted via ActualForum NNTP Server 1.5

14 окт 13, 01:20    [14964358]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Dimitry Sibiryakov
Гость333
Никакого удвоения IO от использования DCM, естественно, не происходит.

Т.е. эти страницы вообще не пишутся на диск?

Пишутся. Но это не означает удвоения IO, ибо "всё-таки его писали не идиоты" (c)

При коммите страницы данных, также как и страницы DCM, не пишутся на диск. Пишутся только записи в журнал транзакций.

Страницы данных вместе с DCM пишутся на диск, например, при чекпойнте. Событие чекпойнта по умолчанию происходит примерно каждую минуту. При этом все "грязные" страницы (т.е. те, которые были изменены в памяти) записываются на диск. Таким образом, удвоение количества операций записи произойдёт только в том случае, если все записываемые страницы будут относиться к различным четырёхгигабайтным отрезкам (напомню, что одна восьмикилобайтная DCM-страница содержит информацию почти по четырём гигабайтам). Но это явно будет какой-то искусственный случай, который в реальной жизни вряд ли можно ожидать.
14 окт 13, 03:00    [14964433]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
pkarklin
Изменения типа данных это онлайн операция, требущая очень короткой блокировки Sch-M (модификация схемы) при выполнении инструкции:

ALTER TABLE dbo.SomeTable ALTER COLUMN SomeColumn <тут новый тип данных>

Хм... вот на 2008R2 у меня зависает надолго (видать выполняет full scan). При этом висит монопольная блокировка, которая не дает даже читать таблицу.

Тут зависит от того, какой тип данных на какой вы меняли. "Очень короткая блокировка Sch-M" будет накладываться, например, при изменении типа с varchar(M) на varchar(N), где M < N. Ещё примеры коротких блокировок привести затрудняюсь, большинство подобных операций изменения типа будет операциями над данными, со всеми вытекающими.

Alexander Ryndin
1) У меня есть таблица ORDERS. В ней 100 млн. записей. Есть поле ORDER_DATE. Даты в поле ORDER_DATE начинаются с 1 января 2010, заканчиваются 31 декабря 2011. Партицирования нет.
2) Хочется иметь эту же таблицу. Но партицированную по полю ORDER_DATE с месячным интервалом.
3) Прерывать работу DML над этой таблицей нельзя.

Как мне это сделать в MSSQL?

CREATE CLUSTERED INDEX I_ORDERS ON ORDERS(ORDER_DATE) WITH(DROP_EXISTING=ON, ONLINE=ON) ON My_Partition_Scheme(ORDER_DATE)
14 окт 13, 03:59    [14964453]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1332
OYM
Victor Metelitsa
пропущено...


А вот и нет. Мало сделать бекап, нужно ещё суметь из него восстановить, причём действия могут разниться в разной обстановке. Отсюда, в случае Oracle, нужно понимать его весьма сложные внутренности. Потому про бекапы/восстановления - половина экзамена OCP!
g
Много людей ходят на курсы администрирования Оракла по 2-3 мес. и даже после этого не могут восстановиться. В SQL Server за пару дней можно освоить базовые вещи восстановления без курсов.

Базовые вещи восстановления:
rman> connect target /
rman> backup database plus archivelog;
rman> ...
rman> restore database;
rman> recover database;

осваиваются за пару минут
14 окт 13, 04:59    [14964474]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4919
Блог
Гость333
Alexander Ryndin
пропущено...
Хм... вот на 2008R2 у меня зависает надолго (видать выполняет full scan). При этом висит монопольная блокировка, которая не дает даже читать таблицу.

Тут зависит от того, какой тип данных на какой вы меняли. "Очень короткая блокировка Sch-M" будет накладываться, например, при изменении типа с varchar(M) на varchar(N), где M < N. Ещё примеры коротких блокировок привести затрудняюсь, большинство подобных операций изменения типа будет операциями над данными, со всеми вытекающими.
Я это как раз и имел в виду. Операции, в которых потенциально могут возникнуть проблемы с размерностью и совместимостью типов данных. А увеличить разме поля varchar - это несложно.
Так вот, при уменьшении размерности поля получилась блокировка, которая даже не позволяла читать таблицу.
14 окт 13, 07:52    [14964531]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4919
Блог
Гость333
Alexander Ryndin
1) У меня есть таблица ORDERS. В ней 100 млн. записей. Есть поле ORDER_DATE. Даты в поле ORDER_DATE начинаются с 1 января 2010, заканчиваются 31 декабря 2011. Партицирования нет.
2) Хочется иметь эту же таблицу. Но партицированную по полю ORDER_DATE с месячным интервалом.
3) Прерывать работу DML над этой таблицей нельзя.

Как мне это сделать в MSSQL?

CREATE CLUSTERED INDEX I_ORDERS ON ORDERS(ORDER_DATE) WITH(DROP_EXISTING=ON, ONLINE=ON) ON My_Partition_Scheme(ORDER_DATE)
Принято. Слегка негранулированный подход (все делает одним махом и не позволяет сделать шаг влево, шаг вправо), но задачу, на первый взгяд, решает.
14 окт 13, 07:56    [14964535]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
iv_an_ru
Member

Откуда: Новосибирск
Сообщений: 20368
Alexander Ryndin
Так вот, при уменьшении размерности поля получилась блокировка, которая даже не позволяла читать таблицу.
Офигеть. Это в 21-м веке. Даже в нашей Виртуозе, с её бедным на свистульки и колокольчики функционалом по части дискового хранилища, любое изменение схемы происходит "мгновенно". В одном индексном дереве могут мирно уживаться страницы с разной раскладкой колонок, поэтому старые страницы вообще никто не трогает, а новые/изменившиеся страницы пишутся в новом представлении.
14 окт 13, 09:57    [14964827]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iv_an_ru
Alexander Ryndin
Так вот, при уменьшении размерности поля получилась блокировка, которая даже не позволяла читать таблицу.
Офигеть. Это в 21-м веке. Даже в нашей Виртуозе, с её бедным на свистульки и колокольчики функционалом по части дискового хранилища, любое изменение схемы происходит "мгновенно". В одном индексном дереве могут мирно уживаться страницы с разной раскладкой колонок, поэтому старые страницы вообще никто не трогает, а новые/изменившиеся страницы пишутся в новом представлении.

MSSQL это частично позволяет. Добавление/удаление столбцов — это операция над метаданными. В Оракле, насколько я знаю, команда удаления столбца ALTER TABLE ... DROP COLUMN стремится переколбасить все блоки данных, а для быстроты нужно выполнить команду ALTER TABLE ... SET UNUSED.

iv_an_ru
любое изменение схемы происходит "мгновенно". В одном индексном дереве могут мирно уживаться страницы с разной раскладкой колонок, поэтому старые страницы вообще никто не трогает, а новые/изменившиеся страницы пишутся в новом представлении.

Мне вот интересно, какие ещё СУБД имеют такой функционал. И ещё интересно, что происходит в Виртуозе, когда тип столбца меняется, скажем, со строкового на числовой. Ведь в строках могут содержаться значения, не конвертируемые в число.
14 окт 13, 10:34    [14965014]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4919
Блог
Гость333
iv_an_ru
любое изменение схемы происходит "мгновенно". В одном индексном дереве могут мирно уживаться страницы с разной раскладкой колонок, поэтому старые страницы вообще никто не трогает, а новые/изменившиеся страницы пишутся в новом представлении.

Мне вот интересно, какие ещё СУБД имеют такой функционал. И ещё интересно, что происходит в Виртуозе, когда тип столбца меняется, скажем, со строкового на числовой. Ведь в строках могут содержаться значения, не конвертируемые в число.
Тут я с Гость333 частично согласен: изменение типа данных со строкового на числовой или уменьшение размерности - это очень тяжелая операция, приводящая к полному сканированию таблицы.
Но мне непонятно, зачем нужна блокировка от чтения? Наследие блокировочника?
14 окт 13, 10:43    [14965077]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
P.S. кстати, а есть ли возможность в MSSQL для надежности задублировать транзакционные журнал на примонтированный диск?

Тут я, как mssql'ный DBD, не совсем понял — что за примонтированный диск, и почему хранение журнала на обычном рейд-массиве недостаточно надёжно?
14 окт 13, 10:59    [14965198]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
iv_an_ru
Member

Откуда: Новосибирск
Сообщений: 20368
Гость333
Мне вот интересно, какие ещё СУБД имеют такой функционал. И ещё интересно, что происходит в Виртуозе, когда тип столбца меняется, скажем, со строкового на числовой. Ведь в строках могут содержаться значения, не конвертируемые в число.
Ну, мы всегда позволяем юзеру прострелить себе ногу максимально комфортным способом --- если он не проверит/причешет данные при изменении схемы, а в таблице есть, что причёсывать, то он может словить проблему когда-нибудь потом, в самое(не)подходящее время :)
14 окт 13, 11:13    [14965321]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
1) Поколоночное сжатие (средняя степень сжатия 7-10 раз)?

Columnstore indexes

Alexander Ryndin
3) Real Application Testing (возможность захватить нагрузку на одной версии СУБД и проиграть ее на другой версии, получить список запрос, которые деградировали)?

Distributed Replay. Включено в цену MSSQL 2012, в отличие от :)

Alexander Ryndin
4) Data Redaction (пользователь в зависимости от разных факторов при SELECT получает либо номер кредитки, либо ХХХХ)

Непонятно, чем это принципиально отличается от создания view, в которой номер кредитки в зависимости от разных факторов заменён на XXXX, и выдачей нужных прав.

Alexander Ryndin
6) Flashback технологии?

Это одна из киллер-фич оракла, да.

Про остальные пункты не скажу, не разбирался, от моих реалий это далеко.
14 окт 13, 11:22    [14965398]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iv_an_ru
Ну, мы всегда позволяем юзеру прострелить себе ногу максимально комфортным способом --- если он не проверит/причешет данные при изменении схемы, а в таблице есть, что причёсывать, то он может словить проблему когда-нибудь потом, в самое(не)подходящее время :)

Офигеть. Это в 21-м веке
14 окт 13, 11:43    [14965630]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
Но мне непонятно, зачем нужна блокировка от чтения? Наследие блокировочника?

Видимо, да. Движок сервера должен быть уверен, что при изменении типа столбца никто не изменит уже просканированные данные. Для этого он накладывает наивысшую блокировку — Sch-M (Schema Modification) — на объект "таблица SomeTable". К объекту, заблокированному таким образом, нельзя обратиться даже при помощи грязного чтения (NOLOCK) — ибо такие инструкции, даже несмотря на слово "NOLOCK", всё равно накладывают на объект блокировку Sch-S (Schema Stability).

Теоретически, можно было бы ввести новый тип блокировки, какой-нибудь Sch-U (Schema Update). При изменении типа столбца, в начальной фазе (сканирование таблицы) — наложить на таблицу эту блокировку. Объявить Sch-U совместимой с операциями чтения, но несовместимой с операциями записи. В конечной фазе (изменение метаданных) — повысить уровень блокировки до Sch-M.

Правда, насколько всё это необходимо IRL — большой вопрос.
14 окт 13, 12:13    [14965883]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67447
Блог
Alexander Ryndin
Но мне непонятно, зачем нужна блокировка от чтения? Наследие блокировочника?

Возможно, для того, чтобы клиент получил хоть сколько-нибудь согласованный набор данных. Скажем, сценарий:

1. Первая сессия читает большой резалтсет с varchar полем
2. Вторая сессия модифицирует поле на number
3. Первая сессия очень удивляется, начав получать number значения в месте, где по метаданным ожидалось varchar
14 окт 13, 12:19    [14965938]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
Теоретически, можно было бы ввести новый тип блокировки, какой-нибудь Sch-U (Schema Update).

Эти фантазии относились к модификациям, для которых было бы достаточно лишь изменения метаданных. Например, varchar(500) -> varchar(100).

Для модификаций, требующих изменений в страницах данных, верно объяснение softwarer.
14 окт 13, 12:30    [14966032]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
iv_an_ru
Member

Откуда: Новосибирск
Сообщений: 20368
softwarer
Возможно, для того, чтобы клиент получил хоть сколько-нибудь согласованный набор данных. Скажем, сценарий:

1. Первая сессия читает большой резалтсет с varchar полем
2. Вторая сессия модифицирует поле на number
3. Первая сессия очень удивляется, начав получать number значения в месте, где по метаданным ожидалось varchar
Это-то как раз не проблема --- автокаст к типу, который должен быть по метаданным, и всё.
14 окт 13, 12:57    [14966328]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Yo.!
Guest
softwarer
1. Первая сессия читает большой резалтсет с varchar полем
2. Вторая сессия модифицирует поле на number
3. Первая сессия очень удивляется, начав получать number значения в месте, где по метаданным ожидалось varchar

гы-гы, и вторая до кучи делает роллбэк
14 окт 13, 13:08    [14966433]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4919
Блог
Гость333
Alexander Ryndin
1) Поколоночное сжатие (средняя степень сжатия 7-10 раз)?

Columnstore indexes
Разве это повзоляет сжать существующую таблицу в 7-10 раз? Судя по названию это поколоночный индекс. И этот индекс создается дополнительно к таблице, хранящейся по строкам. Это местами позволяет ускорить запрос, но как это сокращает занимаемое место?

Гость333
Alexander Ryndin
3) Real Application Testing (возможность захватить нагрузку на одной версии СУБД и проиграть ее на другой версии, получить список запрос, которые деградировали)?

Distributed Replay. Включено в цену MSSQL 2012, в отличие от :)
Изучу

Гость333
Alexander Ryndin
4) Data Redaction (пользователь в зависимости от разных факторов при SELECT получает либо номер кредитки, либо ХХХХ)

Непонятно, чем это принципиально отличается от создания view, в которой номер кредитки в зависимости от разных факторов заменён на XXXX, и выдачей нужных прав.
Тем что не тормозит работу и полностью декларативно.
14 окт 13, 13:12    [14966479]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander Ryndin
Гость333
пропущено...

Columnstore indexes
Разве это повзоляет сжать существующую таблицу в 7-10 раз?

Ок, Clustered columnstore index, coming soon (появится в MSSQL 2014) :^)
14 окт 13, 13:39    [14966669]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54784

Гость333
При коммите страницы данных, также как и страницы DCM, не пишутся на диск.
Пишутся только записи в журнал транзакций.

А тот находится не иначе как в мировом эфире, да...

Гость333
Мне вот интересно, какие ещё СУБД имеют такой функционал. И ещё интересно,
что происходит в Виртуозе, когда тип столбца меняется, скажем, со строкового на числовой.
Ведь в строках могут содержаться значения, не конвертируемые в число.

Interbase так спроектирована с рождения. А для защиты от идиотов изменение типа поля со
строки на число запрещено.

Posted via ActualForum NNTP Server 1.5

14 окт 13, 13:51    [14966777]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Dimitry Sibiryakov
Гость333
При коммите страницы данных, также как и страницы DCM, не пишутся на диск.
Пишутся только записи в журнал транзакций.

А тот находится не иначе как в мировом эфире, да...

Нет, он находится на диске. Продолжайте вашу мысль, очень интересно.
14 окт 13, 14:03    [14966885]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67447
Блог
iv_an_ru
Это-то как раз не проблема --- автокаст к типу, который должен быть по метаданным, и всё.

Для начала парсеру нужно хотя бы определить границы полей, что при расхождении метаданных с данными потока может оказаться затруднительным. Далее, чтобы произвести автокаст, нужно получить от хрустального шара ответ на вопрос "в каком таки формате это поле в потоке". А для этого что, перечитывать метаданные? А если зловредная третья сессия в этот момент поменяет их ещё раз? В общем, мест возможного отказа вполне достаточно, и если протокол изначально не обвешан избыточностью на этот случай, я бы на успешное завершение не надеялся.

В принципе, если браться решать именно такую задачу, не думая о прочем.. я, наверное, двигался бы в сторону версионности метаинформации. То есть alter table modify хранит колонки в виде двунаправленного списка версий. При хранении и передаче поле сопровождается маркером поля/версии, соответственно, в подходящем месте данные кастятся к актуальной версии / выкидывается исключение при невозможности конвертации.
14 окт 13, 14:06    [14966906]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 10 11 12 13 14 [15] 16 17 18 19 .. 54   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить