Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 45 46 47 48 49 50 51 [52] 53 54   вперед  Ctrl
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Вот моя табличка
Таблица записей select count Размер Mb Размер индексов Mb
CUSTOMER 3840000 00:00:24 2741.4 177.0
DISTRICT 1280 00:00:01 10.1 -
HISTORY 3840000 00:00:28 227.3 -
ITEM 100000 00:00:01 9.3 -
NEW_ORDER 1152000 00:00:03 20.5 -
ORDERS 3840000 00:00:12 123.3 91.0
ORDER_LINE 38396012 00:13:31 2472.4 -
STOCK 12800000 00:22:36 4019.6 -
WAREHOUSE 128 00:00:01 1.1 -

Размеры файлов:
tpcc_2.mdf = 9900 Мб
tpcc_2_log.ldf = 150 Мб

Все таблицы, кроме HISTORY, имеют кластерные индексы.
Таблицы CUSTOMER и ORDERS, кроме того -- по одному некластерному индексу.
Скрипты создания индексов:
+
/****** Object:  Index [PK_CUSTOMER]    Script Date: 11/14/2013 01:21:12 ******/
ALTER TABLE [dbo].[CUSTOMER] ADD  CONSTRAINT [PK_CUSTOMER] PRIMARY KEY CLUSTERED 
(
	[c_w_id] ASC,
	[c_d_id] ASC,
	[c_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [CUSTOMER_I2]    Script Date: 11/14/2013 01:21:17 ******/
CREATE UNIQUE NONCLUSTERED INDEX [CUSTOMER_I2] ON [dbo].[CUSTOMER] 
(
	[c_w_id] ASC,
	[c_d_id] ASC,
	[c_last] ASC,
	[c_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_DISTRICT]    Script Date: 11/14/2013 01:21:24 ******/
ALTER TABLE [dbo].[DISTRICT] ADD  CONSTRAINT [PK_DISTRICT] PRIMARY KEY CLUSTERED 
(
	[d_w_id] ASC,
	[d_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_WAREHOUSE]    Script Date: 11/14/2013 01:22:15 ******/
ALTER TABLE [dbo].[WAREHOUSE] ADD  CONSTRAINT [PK_WAREHOUSE] PRIMARY KEY CLUSTERED 
(
	[w_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_STOCK]    Script Date: 11/14/2013 01:22:06 ******/
ALTER TABLE [dbo].[STOCK] ADD  CONSTRAINT [PK_STOCK] PRIMARY KEY CLUSTERED 
(
	[s_w_id] ASC,
	[s_i_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [ORDERS_I2]    Script Date: 11/14/2013 01:22:00 ******/
CREATE NONCLUSTERED INDEX [ORDERS_I2] ON [dbo].[ORDERS] 
(
	[o_w_id] ASC,
	[o_d_id] ASC,
	[o_c_id] ASC,
	[o_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_ORDERS]    Script Date: 11/14/2013 01:21:56 ******/
ALTER TABLE [dbo].[ORDERS] ADD  CONSTRAINT [PK_ORDERS] PRIMARY KEY CLUSTERED 
(
	[o_w_id] ASC,
	[o_d_id] ASC,
	[o_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_ORDER_LINE]    Script Date: 11/14/2013 01:21:47 ******/
ALTER TABLE [dbo].[ORDER_LINE] ADD  CONSTRAINT [PK_ORDER_LINE] PRIMARY KEY CLUSTERED 
(
	[ol_w_id] ASC,
	[ol_d_id] ASC,
	[ol_o_id] ASC,
	[ol_number] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_NEW_ORDER]    Script Date: 11/14/2013 01:21:38 ******/
ALTER TABLE [dbo].[NEW_ORDER] ADD  CONSTRAINT [PK_NEW_ORDER] PRIMARY KEY CLUSTERED 
(
	[no_w_id] ASC,
	[no_d_id] ASC,
	[no_o_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

/****** Object:  Index [PK_ITEM]    Script Date: 11/14/2013 01:21:34 ******/
ALTER TABLE [dbo].[ITEM] ADD  CONSTRAINT [PK_ITEM] PRIMARY KEY CLUSTERED 
(
	[i_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

Версия ПО
Microsoft SQL Server 2008 (SP3) - 10.0.5512.0 (Intel X86)
Aug 22 2012 15:16:00
Copyright (c) 1988-2008 Microsoft Corporation
Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
14 ноя 13, 01:31    [15125312]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Dimitry Sibiryakov
фокусы-покусы с хранимыми агрегатами, которые у некоторых важно именуются OLAP кубами.

Это смотря какие хранимые агрегаты. Некоторые легко реализуются при помощи индексированных представлений.
14 ноя 13, 01:35    [15125326]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

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

Гость333
Некоторые легко реализуются при помощи индексированных представлений.

А справятся это представления показывать точные числа в многопользовательской среде, если
другие коннекты таблицу активно пополняют?

Posted via ActualForum NNTP Server 1.5

14 ноя 13, 02:20    [15125369]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30237
pkarklin
но зачем мне индекс меньшего размера, если я его всё равно не могу использовать.


select count() в версионнике каждому выдает свою информацию. Поэтому, в общем случае, эта информация практически бесполезна. Количество записей (версий) по ПК в ФБ можно мгновенно так быстро посчитать как 1/selectivity, для уникального индекса или ПК.
Оптимизатор же никогда select count() не использует, потому что размер таблицы он определяет другим способом, гораздо быстрее, но без учета видимости версий (по максимуму - записи+версии).
Так что в ФБ невозможность быстрого подсчета select count() недостатком не считаю. Не тот это запрос, чтобы часто его выполнять.

А для других целей - поиск, отбор диапазонов, проход в порядке индекса, битмап-слияние - индекс вполне используется.
14 ноя 13, 03:28    [15125402]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
pkarklin
kdv
Или вы хотите сравнить select count по всем страницам таблицы с select count, который например в ms sql может выполняться по индексу? Т.е. не хотите ли вы апельсины с яблоками сравнить? :-)


Ну, практически, Бинго! ;) Умеет ли FB сделать COUNT(*) не по данным, а по индексу, т.е. :


Интересно посмотреть на производительность COUNT(*) без грязного чтения в mssql в режиме блокировочника при интенсивных многопользовательских вставках.
14 ноя 13, 09:46    [15125859]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

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

А справятся это представления показывать точные числа в многопользовательской среде, если
другие коннекты таблицу активно пополняют?

Да, справятся -- данные в indexed view обновляются одновременно с изменениями в базовых таблицах. Отложенного режима обновления, как, например, в Oracle, нет вообще. Встречал мнение, что на производительности системы indexed view сказввается примерно так же, как дополнительный индекс на таблице.
14 ноя 13, 10:18    [15126017]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
FreemanZAV
Интересно посмотреть на производительность COUNT(*) без грязного чтения в mssql в режиме блокировочника при интенсивных многопользовательских вставках.


Если это намек, что запрос с SELECT COUNT(*) без грязного чтения в блокировочном режиме приведет к эскалации блокировок, то это не так.

Процесс выполнения запроса будет состоять из быстрого наложения и снятия Shared блокировки уровня страницы индекса. То, что при одном и том же SPID блокировки накладываются и снимаются одновременно на разные страницы - это "следы" Intra-Query Parallelism:

К сообщению приложен файл. Размер - 99Kb
14 ноя 13, 10:19    [15126026]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Гость333
Dimitry Sibiryakov
фокусы-покусы с хранимыми агрегатами, которые у некоторых важно именуются OLAP кубами.

Это смотря какие хранимые агрегаты. Некоторые легко реализуются при помощи индексированных представлений.


Всё не так радужно, когда прочитаешь об ограничениях

Особенно раздел
Инструкция SELECT в определении представления не должна содержать следующие элементы языка Transact-SQL:
14 ноя 13, 10:33    [15126118]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
pkarklin
FreemanZAV
Интересно посмотреть на производительность COUNT(*) без грязного чтения в mssql в режиме блокировочника при интенсивных многопользовательских вставках.


Если это намек, что запрос с SELECT COUNT(*) без грязного чтения в блокировочном режиме приведет к эскалации блокировок, то это не так.

Процесс выполнения запроса будет состоять из быстрого наложения и снятия Shared блокировки уровня страницы индекса. То, что при одном и том же SPID блокировки накладываются и снимаются одновременно на разные страницы - это "следы" Intra-Query Parallelism:


Не показательно, ибо тут опять же один процесс
14 ноя 13, 10:53    [15126273]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
FreemanZAV
Не показательно


Что нужно показать?
14 ноя 13, 11:16    [15126447]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
pkarklin
FreemanZAV
Не показательно


Что нужно показать?



Freemanzav
производительность COUNT(*) без грязного чтения в mssql в режиме блокировочника при интенсивных многопользовательских вставках.
14 ноя 13, 11:24    [15126493]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
FreemanZAV
pkarklin
пропущено...


Что нужно показать?



Freemanzav
производительность COUNT(*) без грязного чтения в mssql в режиме блокировочника при интенсивных многопользовательских вставках.


Ну и производительность самих вставок
14 ноя 13, 11:25    [15126500]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Freemanzav
производительность COUNT(*) без грязного чтения в mssql в режиме блокировочника при интенсивных многопользовательских вставках.


Можно для тупых, что я должен сделать?

1. Сделать SELECT COUNT(*) без вставок и померять время его выполнения;
2. Запустить кучу вставок и померять время выполнения каждой;
3. Запустить SELECT COUNT(*) вместе со вставками и сравнить с пунктом 1 и 2.

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

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

Это смотря какие хранимые агрегаты. Некоторые легко реализуются при помощи индексированных представлений.


Всё не так радужно, когда прочитаешь об ограничениях

Особенно раздел
Инструкция SELECT в определении представления не должна содержать следующие элементы языка Transact-SQL:

Почти все ограничения вполне логичны, без них не построить быстро обновляемое индексированное представление.

ЕМНИП, именно materialized view позволило Ораклу лет 15 назад получить турбо-ускорение в одной из частей теста TPC-D. Эллисон ещё предлагал миллион долларов тому, кто в этом тесте с помощью MSSQL достигнет хотя бы 1% производительности Оракла. А когда товарищи из MS реализовали indexed view и почти догнали Оракл, то Эллисон тихо слился
14 ноя 13, 13:42    [15127899]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

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

pkarklin
Можно для тупых, что я должен сделать?

1. Открыть две сессии.
2. В одной из них запустить транзакцию уровня serializable и удалить 100500 записей из
таблицы.
3. В другой вставить 100500 записей в таблицу и закоммитить.
4. В первой запустить select count(*) и rollback.
5. Во второй запустить select count(*) до того как в первой пройдёт rollback.

Posted via ActualForum NNTP Server 1.5

14 ноя 13, 14:11    [15128279]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

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

pkarklin
Что мы этим хотим показать доказать?

Показать как MS SQL справляется с подсчётом записей на уровне repeatable read и/или при
наличии незакоммиченных транзакций.

Posted via ActualForum NNTP Server 1.5

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

Откуда: Москва (Муром)
Сообщений: 74930
Dimitry Sibiryakov
1. Открыть две сессии.
2. В одной из них запустить транзакцию уровня serializable и удалить 100500 записей из
таблицы.
3. В другой вставить 100500 записей в таблицу и закоммитить.
4. В первой запустить select count(*) и rollback.
5. Во второй запустить select count(*) до того как в первой пройдёт rollback.


Дима! Что за эротические фантазии?! Поставь себе экспресс редакцию и экспериментируй. Хоть с включенной версионностью, хоть без.
14 ноя 13, 14:19    [15128400]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Dimitry Sibiryakov
Показать как MS SQL справляется с подсчётом записей на уровне repeatable read и/или при
наличии незакоммиченных транзакций.


repeatable read или таки serializable?
14 ноя 13, 14:20    [15128413]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

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


Всё не так радужно, когда прочитаешь об ограничениях

Особенно раздел
Инструкция SELECT в определении представления не должна содержать следующие элементы языка Transact-SQL:

Почти все ограничения вполне логичны, без них не построить быстро обновляемое индексированное представление.

ЕМНИП, именно materialized view позволило Ораклу лет 15 назад получить турбо-ускорение в одной из частей теста TPC-D. Эллисон ещё предлагал миллион долларов тому, кто в этом тесте с помощью MSSQL достигнет хотя бы 1% производительности Оракла. А когда товарищи из MS реализовали indexed view и почти догнали Оракл, то Эллисон тихо слился


В Oracle нет таких ограничений на SELECT в materialized view
14 ноя 13, 14:29    [15128516]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

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

pkarklin
repeatable read или таки serializable?

А у MS SQL между ними есть какая-то разница?..

Posted via ActualForum NNTP Server 1.5

14 ноя 13, 14:42    [15128662]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Dimitry Sibiryakov
А у MS SQL между ними есть какая-то разница?..


Конечно!
14 ноя 13, 14:45    [15128699]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Dimitry Sibiryakov
Member

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

pkarklin
Конечно!

А который из них обеспечит один и тот же count что бы ни делали с таблицей конкуренты?

Posted via ActualForum NNTP Server 1.5

14 ноя 13, 14:48    [15128735]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Dimitry Sibiryakov
А который из них обеспечит один и тот же count что бы ни делали с таблицей конкуренты?


Только SERIALIZABLE и SNAPSHOT, ибо REPEATABLE READ не избавляет от фантомов.
14 ноя 13, 14:52    [15128790]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
FreemanZAV
В Oracle нет таких ограничений на SELECT в materialized view

Каких именно "таких"?
Оракловый список тоже не мал: Restrictions on Fast Refresh on Materialized Views with Aggregates
14 ноя 13, 15:16    [15129056]     Ответить | Цитировать Сообщить модератору
 Re: Зачем выбирать другие СУБД, если существует MS SQLServer?  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Гость333
FreemanZAV
В Oracle нет таких ограничений на SELECT в materialized view

Каких именно "таких"?
Оракловый список тоже не мал: Restrictions on Fast Refresh on Materialized Views with Aggregates


Не вижу, чтобы в этом документе запрещалось использование внешних объединений, например
14 ноя 13, 15:21    [15129099]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 45 46 47 48 49 50 51 [52] 53 54   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить