Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
Вопрос:
Какие свойства рекордсета влияют на скорость (желательно в сторону +)
Как самому настроить кэш MSSQL (где, как долго и что хранить)?

Причина:
Есть клиент, использует динамически подключаемые библиотеки, написанные на VisualStudio 6 SP5, для подключения к разным базам (ORACLE - через OCI, MSSQL - через OLE DB)
тестовый запрос: SELECT * FROM TABLE
Есть 1 кластерный индекс на 2-х полях типа varchar(22) и varchar(4),
40 уникальных, число полей - 345 [получен от клиента]

Читаем построчно в локальный буфер размером 1 строка

При первом запуске время для Oracle - 47 секунд, при любом повторном - 15.
MSSQL - при первом - 45 секунд, при любом повторном - 43
В QA
SELECT * INTO #T FROM TABLE от 2 до 3 секунд всегда
SELECT * FROM TABLE всегда 10-12 секунд

Сделано:

Свойства рекордсета:
DBPROP_IRowsetLocate
DBPROPOPTIONS_REQUIRED
VARIANT_TRUE
На сервере:
Стоит отдельно от клиента. (Oracle тоже)
на вкладке MEMORY
Use a fixed memory size - выделил по максимуму
Reserve physical memory for SQL Server - включено
QA стоит на клиенте.
11 ноя 04, 14:09    [1098533]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
Прошу прощения за оффтопик , здесь в этой ветке форума важен 2 вопрос - про настройки кэш на сервере.
11 ноя 04, 14:35    [1098630]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
тестовый запрос: SELECT * FROM TABLE
Есть 1 кластерный индекс на 2-х полях типа varchar(22) и varchar(4),
40 уникальных, число полей - 345 [получен от клиента]


Никакие тут индексы не помогут, развы все на клиента тащите.

автор
Читаем построчно в локальный буфер размером 1 строка


Вот это вот не совсем понятно. Зачем по одной строке в локальный буфер читать?!

автор
В QA
SELECT * INTO #T FROM TABLE от 2 до 3 секунд всегда
SELECT * FROM TABLE всегда 10-12 секунд


Ну так в первом случаи на клиента ничего не пердается! Скока, кстати, записей в таблице?

ЗЫ. что-то вариант с SELECT * FROM TABLE кажется мне мало подходящим для такого тестирования.
11 ноя 04, 14:49    [1098684]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
Про индексы я сообщил, чтобы инфа была полнее

Читаю по 1 строке - так написан код в вышележащем приложении, мое дело - DLL под MSSQL или Oracle.

Селект во временную таблицу - хотелось оценить сколько это стоит серверу.
Число строк - Number of fetched ROWS = 25995

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

Базу руками не трогать, как залилась - все. Изменения толька из приложения. Только Stored Procedure могу понакидать.

Наверно нужно переписать dll по-другому
11 ноя 04, 15:09    [1098772]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Glory
Member

Откуда:
Сообщений: 104760
Читаю по 1 строке - так написан код в вышележащем приложении, мое дело - DLL под MSSQL или Oracle.
Несовсем понятно тогда почему вы включаете операции на клиенте в общее время выполнения запроса.

Волнует настройка кэш на сервере, как его прибрать к рукам?
Никак. Сервер сам динамически определяет под что именно он выделяет доступный ему в данный момент времени пул памяти.
11 ноя 04, 15:15    [1098794]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
Перечитываю все по оптимизации, что у меня есть.


8-)

О какой оптимизации может идти речь в контексте тупой выборки всех полей всех записей на клиента, да еще если этих записей 30 000???!!!
11 ноя 04, 15:17    [1098810]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2676
Вы пользуете OLE DB для выборки данных.
При чем здесь построчная выборка?
И вообще, сервер шлет данные пакетами, а с какой скоростью вы их принимаете - это ваши проблемы, вернее, проблемы библиотеки доступа.
И сетевого интерфейса.

А то, что
SELECT * INTO #T FROM TABLE
выполняется 2 до 3 секунд - так это и есть реальная внутренняя скорость обработки ваших данных.
11 ноя 04, 15:36    [1098930]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
Прояснилось:

2Glory -
1) Операции на клиенте при разных dll (для Оракла или M$) одни и те же.
Только вот почему-то Oracle при повторном тесте уменьшает время отработки и существенно, а M$SQL - нет
2) значит никак, -> в эту сторону я копать не буду

2pkarklin
Надеялся найти что-нибудь, что помогло бы серверу работать лучшее 8-)
Индексы переиндексировал, файлы и индексы дефрагментировал.
Это был только тест, а там внутри много чего, не только тупая выборка, есть все, что угодно, все запросы генерятся клиентом и передаются в dll, уже из нее, при установленном коннекте, запрос выполняется, полученный рекордсет передает данные по 1 строке (типа связка [GetNext(1) ReleaseRows(1)]). БД не очень большая 2282 Mb без лог-файла.

Так что на более сложных тестах то же самое - при первом запросе (при обнулении кэш на сервере) скорость обработки MSSQL выше, зато при любом следующем Oracle существенно уменьшает свое время теста, а MSSQL - нет.
В цифрах отношение у Оракла > 2, у MSSQL почти 1-ца (8%)

Вывод - Надо переписать dll. Правильно?
11 ноя 04, 15:38    [1098949]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Glory
Member

Откуда:
Сообщений: 104760
1) Операции на клиенте при разных dll (для Оракла или M$) одни и те же.
Только вот почему-то Oracle при повторном тесте уменьшает время отработки и существенно, а M$SQL - нет

Почему тогда делается вывод что виноват MSSQL а dll непричем ?
По-моему вот это
"В QA
SELECT * INTO #T FROM TABLE от 2 до 3 секунд всегда
SELECT * FROM TABLE всегда 10-12 секунд
"
говорит как раз о том что как раз dll виновата.
11 ноя 04, 15:43    [1098968]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
все запросы генерятся клиентом и передаются в dll


Это не есть гуд.

автор
Так что на более сложных тестах то же самое - при первом запросе (при обнулении кэш на сервере) скорость обработки MSSQL выше, зато при любом следующем Oracle существенно уменьшает свое время теста, а MSSQL - нет.
В цифрах отношение у Оракла > 2, у MSSQL почти 1-ца (8%)


А надо экперименты проводить не через вашего клиента, а через QA например. И длительность выполнения на сервере смотреть.
11 ноя 04, 15:43    [1098972]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
2Makar4ik
При чем здесь построчная выборка?
Для общей Вашей информации. Наверно она была лишней.
проблемы библиотеки доступа
Это верно, буду редактировать, наверняка найдется что-то.
И сетевого интерфейса.
С этим нет проблем 8-)

Вопрос вобщем-то был о настройках MSSQL сервера, все, что я знал - применил. Здесь в форуме много чего писали - найду, проверю, может что и упустил.
11 ноя 04, 15:45    [1098988]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
2pkarklin
Верно, надо провести экс на сервере. Что-то типа сгенерить курсор на одной таблице, пройтись по полям, по номеру договора пройтись по другой таблице и приджойнить что-нибудь.
Замерить время с обнуленным кэш, потом несколько раз запустить тест, УВИДЕТЬ разницу по времени выполнения теста.

Спасибо, буду стараться 8-)

Главное, чтобы я не упустил что-нибудь при настройке сервера.
11 ноя 04, 15:50    [1099014]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
Главное, чтобы я не упустил что-нибудь при настройке сервера.


Главное - обойтись без курсоров.
11 ноя 04, 15:53    [1099030]     Ответить | Цитировать Сообщить модератору
 Re: Свойства рекордсетов, кэш и скорость  [new]
Zberik
Member

Откуда:
Сообщений: 67
2Glory
говорит как раз о том что как раз dll виновата.
Надо только подсчитать разницу по времени выполнения теста во время первого захода и последующими. Только чтобы она не была близка к 1-це

Всем большое СПАСИБО, ваша поддержка очень мне нужна и важна
Best regards
Berik
11 ноя 04, 15:54    [1099034]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить