Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Буквально: 2 апреля был на сбороище Sybase. Выступали ихние инженеры, разработчики. Меня убило откровение: оказывается Sybase не использует многозадачность, ни многопоточность. В ядре у него встроен собственный скедулер, который и запускает поочередно задачи. А каждая задача должна самостоятельно вернуть управление основному процессу.
Для примера DB2 - каждому соединению назначается собственный агент, который является либо потоком (Win,OS/2) либо процессом (UNIX). Интересно каким образом то же самое реализуется в Oracle и MsSQL?

Анекдот в тему (бородатый только):
Сын Биллу Гейтсу:
-Папа, покажи как в Видузе реализована многозадачность?
-Сейчас сынок..,только допечатаю...
7 апр 03, 08:46    [166050]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
eNose
Member

Откуда:
Сообщений: 183063
В случае с Sybase - ничего страшного. Если грамотно написанно - то все нормально. Винда 3.xx именно так и работает.
7 апр 03, 09:04    [166061]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
>Для примера DB2 - каждому соединению назначается собственный агент, который является либо потоком (Win,OS/2) либо процессом (UNIX).

В Oracle два режима:
1) Dedicated server - аналогичен описанному тобой примеру с DB2
2) MTS - один серверный процесс может обслуживать сотню клиентских.
7 апр 03, 10:29    [166144]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Вопрос принципиальный - касающийся производительности и надежности.
Если падает единственный процесс... А как на счет параллелизма?
Если одина задача слишком долго не возвращает управление? Все остальные - ждут?
7 апр 03, 10:39    [166158]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
Дед Маздай
Member

Откуда:
Сообщений: 655
Если говорить за SQL Server, то "у целом" картина следующая. Каждый инстанс является многопоточным. Потоки - "родные", операционной системы. Отдаются под обслуживание пользовательских соединений, либо под внутризапросный параллелизм. Когда что предпочесть, SQL Server решает сам в зависимости от числа текущих соединений и от стоимости запроса.
7 апр 03, 13:11    [166463]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
AI
Member

Откуда: Москва
Сообщений: 2817
У оракла имеется свой resource manager, который в числе прочих задач может отдавать ресурсы процессора для пользовательских процессов в соответствии с планами распределения ресурсов.
7 апр 03, 14:38    [166638]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
>Вопрос принципиальный - касающийся производительности и надежности.
Если падает единственный процесс... А как на счет параллелизма?
Если одина задача слишком долго не возвращает управление? Все остальные - ждут?

Я упрощенно ответил. На самом деле при МТS работает несколько серверных процессов и несколько процессов-диспетчеров, которые балансируют нагрузку между первыми. Ваша сессия прозрачно использует все серверные процессы, точнее каждый новый исходящий от нее сиквел может быть обслужен любым из свободных серверных процессов.
7 апр 03, 15:03    [166677]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
и что вы понимаете под параллелизмом?
7 апр 03, 15:05    [166681]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Параллелизм - способность програмного обеспечения обрабатывать несколько подключений одновременно. (не путать с параллельным вводом - выводом и распараллеливанием запросов)
7 апр 03, 17:31    [166938]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
это вообще то одна из базовых функций ОС. Оракл использует сервис ОС, но может учитывать и приоритетность собственных задач через директивы resource manager'a.

Непонятно, чем вызвано ограничение в Sybase. В наши то дни ...
7 апр 03, 17:39    [166953]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
ppp
Member

Откуда:
Сообщений: 278
to gardenman
Moxzet chego nedoponjali , kak to uz bolno primitivno vse poluchaetsa.
8 апр 03, 20:50    [168431]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Да в том то и дело, что всё очень хорошо понял...
Более того - ежедневно мучаюсь т.к. на Sybase работаю...(((
10 апр 03, 09:59    [169922]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
Ggg
Guest
2 gardenman:
А в чем мучения, если не секрет?
10 апр 03, 11:47    [170113]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
еще вопрос - а на каком Sybase то - ASA или ASE ?
10 апр 03, 12:49    [170239]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
c127
Guest
2 killed
>Непонятно, чем вызвано ограничение в Sybase. В наши то дни ...

Да тем, что они сами многопоточность написали внутри своего SQL сервера, так что это не ограничение. Может даже оказаться, что лучше будет работать, ведь пишется под частный случай. Это как с malloc/new: если хотите, чтоб работало быстро - пишите свой внутри заранее алоцированного куска памяти. По всем признакам оракл так и сделал.

Не помню как в юниксах, а в винде каждый thread при инициализации забирает примерно мегабайт мозгов, что есть довольно много. Поэтому существует правило: стараться не порождать больше потоков, чем мегабайт памяти. Вот сайбейз и решил, что он круче мелкософта, а заодно и сана с ИБМ, сам лучше сделает, тем более писался он когда NT, например, не было и в проекте. Если все аккуратно сделать, то действительно должно лучше работать. Недостаток один - больше работы, но на большом проекте возможно и окупится. Лично я бы так не делал, но меня не спросили.
11 апр 03, 02:53    [171097]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Я был на конференции по ASE. Так что все вышеизложенное касается ASE.

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

И еще, заметил одну особенность. У Sybase кажется плохо с распараллеливанием ввода-вывода. Почему-то разделив индексы/данные/лог по физическим дискам не получаешь того прироста производительности, как в других базах.
11 апр 03, 11:56    [171536]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
>Почему-то разделив индексы/данные/лог по физическим дискам не получаешь того прироста производительности, как в других базах.

Индексный доступ имеет последовательную природу. Поэтому разнеся данные и индексы на разные устройства вы получите лишь некую "балансировку" по вводу/выводу в целом на уровне базы (надо заметить, уже однозначно не сбалансированную ). С этой задачей гораздо лучше справляется хардварный страйпинг.
11 апр 03, 12:45    [171653]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
Alex5555555555
Member

Откуда:
Сообщений: 114
подскажите г-да где почитать о устройстве ядра ms sql и как там всё работает
для чайников!
22 май 12, 12:54    [12593804]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
Dimitry Sibiryakov
Member

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

Alex5555555555
для чайников!

Для чайников там всё работает так: "ж-ж-ж-ж, чпок-чпок-чпок". Читать, естественно, в MSDN.

Posted via ActualForum NNTP Server 1.5

22 май 12, 13:33    [12594209]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
pkarklin
Member

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

http://www.sqlserverinternals.com/books.html
22 май 12, 14:16    [12594665]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

On 05/22/2012 01:54 PM, Alex5555555555 wrote:

> подскажите г-да где почитать о устройстве ядра ms sql и как там всё работает
> для чайников!

Книга Гарсиа-Молино, Ульман, Уидом. Читай.

Posted via ActualForum NNTP Server 1.5

22 май 12, 14:52    [12595033]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
в последних MS SQL
Guest
А в последних MS SQL используется собственный шедулер и собственная многопоточность вместо многопоточности ОС?
22 май 12, 15:10    [12595181]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709


> А в последних MS SQL используется собственный шедулер и собственная
> многопоточность вместо многопоточности ОС?

Что значит "в последних", когда традиционно так всегда было,
теперь возможно переделали на fiber-ы.

Posted via ActualForum NNTP Server 1.5

22 май 12, 15:33    [12595366]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
SQL Server Batch or Task Scheduling

Each instance of SQL Server has an internal layer that implements an environment similar to an operating system. This internal layer is used for scheduling and synchronizing concurrent tasks without having to call the Windows kernel. This internal layer can also schedule fibers or Windows threads effectively. Each instance of SQL Server maintains a pool of either Windows threads or fibers for processing user queries.
22 май 12, 15:46    [12595486]     Ответить | Цитировать Сообщить модератору
 Re: Ядро СУБД (MS SQL, Oracle, Sybase, DB2)  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3795
killed
>Для примера DB2 - каждому соединению назначается собственный агент, который является либо потоком (Win,OS/2) либо процессом (UNIX).

В Oracle два режима:
1) Dedicated server - аналогичен описанному тобой примеру с DB2
2) MTS - один серверный процесс может обслуживать сотню клиентских.

И даже банальный FireBird работает точно также, и имеет два таких же режима.
p.s. Sybase в топку
22 май 12, 16:30    [12595855]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить