Дата  Запланированые курсы
25.02 Поисковая оптимизация (SEO) для профессионалов
25.02 MOC-20742B. Инфраструктура идентификации на основе Windows Server 2016
25.02 Работа в MS Excel. Базовый уровень
25.02 MOC-20762. Разработка баз данных SQL
25.02 Архитектура современных компьютеров
03.03 Рисунок
04.03 DEV-PY-MP. Модульная программа "Разработчик прикладного программного обеспечения (Язык Python)"
04.03 DEV-C-CP. Комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
04.03 Основы алгоритмизации и программирования (Группа II)
04.03 Основы алгоритмизации и программирования (Группа I)
04.03 DEV-C-CP+. Расширенная комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
04.03 DEV-C10. Процедурное программирование. Языки С/C++
04.03 DEV-PY100. Основы процедурного программирования на языке Python
04.03 DEV-PY-MP+. Расширенная модульная программа "Разработчик прикладного программного обеспечения (язык Python)"
04.03 Разработка пользовательских Web-интерфейсов (JavaScript)
05.03 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
05.03 DEV-J10. Программирование на платформе Java. Введение в язык Java
05.03 DEV-J-CP. Комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
11.03 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
11.03 MOC-20744A. Безопасность инфраструктуры средствами Windows Server 2016
11.03 Основы создания веб-сайтов. Adobe Dreamweaver
11.03 MOC-20764. Администрирование инфраструктуры баз данных SQL
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
14.03 Работа в MS Excel. Расширенные возможности
18.03 Инструменты бизнес-анализа Microsoft Excel: PowerPivot, PowerView
18.03 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
18.03 Разработка баз данных (MS Access)
18.03 MOC-10961B. Автоматизация администрирования с Windows PowerShell
20.03 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
20.03 Автоматизация работы в Excel с использованием VBA
25.03 Информационно-коммуникационные технологии в учебном процессе
25.03 DEV-PY110. Процедурное программирование на языке Python (расширенный курс)
01.04 Трёхмерное моделирование. 3ds Max
01.04 Linux-MP. Модульная программа «Архитектура и администрирование Linux»
01.04 Linux-LE. Основы архитектуры и администрирования Linux
01.04 Средства растровой графики. Adobe Photoshop
01.04 Введение в тестирование программного обеспечения
02.04 DEV-J20. Программирование на платформе Java. Стандартные пакеты
08.04 Linux-LF. Расширенное администрирование ОС Linux
08.04 Средства векторной графики. Adobe Illustrator
08.04 Профессиональная верстка сайтов. HTML5 и CSS3
15.04 Компьютерное проектирование в системе AutoCAD (базовый курс)
16.04 DEV-C20. Объектно-ориентированное программирование. Базовый уровень. Язык С++
17.04 DEV-PY111. Базовые алгоритмы и структуры данных на языке Python
22.04 Adobe Photoshop для профессионалов
22.04 Adobe After Effects. Создание анимации и эффектов
06.05 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
13.05 Компьютерное проектирование в системе AutoCAD (базовый курс)
20.05 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
27.05 DEV-PY200. Объектно-ориентированное программирование на языке Python
03.06 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
03.06 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
17.06 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
20.06 DEV-PYQT. Разработка оконных приложений Python c использованием Qt
02.09 DEV-PYWEB. Разработка WEB приложений на языке Python
02.09 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
02.09 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
30.09 Введение в тестирование программного обеспечения
30.09 Введение в тестирование программного обеспечения
30.09 Введение в тестирование программного обеспечения
Открыт набор на весенний семестр на программы профессиональной переподготовки
Начало занятий 1 марта!
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

ms sql приоритет чтения и записи
Shek
#1 Оставлено : 4 марта 2011 г. 23:06:15(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 09.02.2009(UTC)
Сообщений: 146
Баллов: 438
Откуда: Russia Питер

Здравствуйте!
Помогите, пожалуйста, решить задачку:
Есть сервер DELL R410, 24G RAM, двухпроцессорный.
Есть MS SQL Server 2008 R2 и создана БД, файлы данных которой лежат на отдельном жестком диске.
Включаю потоковую запись в эту базу в определенную таблицу, все отлично, пишет по 1000-1500 записей в секунду, очередей к диску нет, загрузки процессора и памяти тоже, ничего не мешает работе.
Но как только одновременно с записью я пытаюсь хотя бы одним клиентом считывать что-нибудь из этой же таблицы, то SQL сервер практически перестает писать в нее, скорость записи падает до считанных единиц, может десятков записей в секунду.
При этом мониторинг показывает, что очередей к дискам нет, оперативная память свободна, процессоры на 10%, ни по каким параметрам не достигнут предел производительности, такое ощущение, что SQL сервер искусственно ограничивает потоки на запись отдавая приоритет потокам на чтение, когда дело касается одной и той же таблицы...

Что самое странное рядом стоят два таких же сервера и работают хоть бы что, одновременно и пишут и читают, все как положено. Единственное не я устанавливал на них SQL, поэтому и вопрос - где в MS SQL настройки по части приоритетов ввода/вывода, чтения/записи?
Может что другое посоветуете?

Спасибо!
Реклама
Alexander.Kudakov
#2 Оставлено : 8 марта 2011 г. 18:06:25(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
почитайте тут msdn.microsoft.co...s/library/ms181714.aspx про Query Hints и Table Hints - в зависимости от которых СУБД устанавливает блокировки на объекты.
Shek
#3 Оставлено : 10 марта 2011 г. 12:11:09(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 09.02.2009(UTC)
Сообщений: 146
Баллов: 438
Откуда: Russia Питер

Спасибо!
Продолжая первый вопрос - подскажите, пожалуйста, насколько эффективна следующая схема получения данных для решения задачи получения одних и тех же данных из разных источников при одновременном их чтении клиентами:

Для примера, есть два отдельных источника, например, два отдельных компьютера, которые по ODBC закачивают одни и те же данные в SQL сервер, иногда один может ненадолго отключаться, почти всегда между ними бывает какая-то небольшая разница во времени, то один быстрее, то другой.
Логика получения данных реализована так, что каждый источник пишет в одну свою временную таблицу (здесь и дальше речь идет об одной единственной базе), назовем их Buffer1 и Buffer2 соответственно. На каждой из этих двух таблиц работает триггер, который при поступлении порции данных пытается скопировать эту порцию в одну и ту же третью таблицу, например, DataHeap, при этом конечно сначала проверяет нет ли в ней уже того, что нужно скопировать (потому что запись идет от двух источников и неизвестно кто запишет раньше).
В свою очередь на таблице DataHeap тоже висит триггер и при поступлении данных, обрабатывает эти данные и закидывает их в обработанном виде во все очереди, которые нужно, а очередей столько, сколько подключившихся клиентов и каждый получает какую-то свою часть из обработанных данных.

триггеры на буферных таблицах написаны с инструкцией
INSERT dbo.DataHeap WITH ( TABLOCKX )
...
SELECT
...
FROM
...
WHERE NOT EXISTS (...)

Правильно ли принципиально организована схема?
Как нужно делать правильно?
Если вы хороший специалист по СУБД MS SQL с опытом администрирования MS SQL для специфичных задач, пишите мне в личку, нашей фирме очень нужен опытный знающий человек как минимум на платный консалтинг, а лучше на постоянную хорошую работу.
Alexander.Kudakov
#4 Оставлено : 10 марта 2011 г. 19:06:52(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
Shek, с решением такой ad hoc задачи я врятли помогу. попробуйте поспращивать на спец-форумах.

могу пример из личного опыта:

ISA-сервер "умеет" писать лог в БД, причем протоколируется каждый полученный методом http/get объект.
был написан триггер который суммировал траффик полученный каждым пользователем (т.е. фактически задача такая же).
это было давно... аппаратная платформа была не самая быстрая. sql серверу было тяжело.
"проект" был закрыт но по другой причине...
Shek
#5 Оставлено : 11 марта 2011 г. 12:38:18(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 09.02.2009(UTC)
Сообщений: 146
Баллов: 438
Откуда: Russia Питер

Ну лан, спасибо и на том.
Shek
#6 Оставлено : 14 марта 2011 г. 16:23:11(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 09.02.2009(UTC)
Сообщений: 146
Баллов: 438
Откуда: Russia Питер

В продолжении разговора:

Объясните, пожалуйста, почему так происходит, что MS SQL server 2008 r2 при записи в, или чтении из одного файла данных одной базы, который лежит совсем один на физически отдельном жестком диске создает очередь к диску в 200-300, при этом время ответа держится в районе 300 мс.

Просто совсем не понятно почему возникают очереди, ведь файл на диске один единственный, при этом даже нет таких ситуаций когда одновременно идет и чтение и запись, только либо одно либо другое. К слову сказать, я делаю select count(*) from table with(nolock).

Очереди могут возникать, когда идет борьба за доступ к нескольким файлам на одном и том же диске, либо борятся несколько процессов за доступ к одному файлу, но тут один процесс sqlservr.exe, один запрос, один файл...
Специально и выносили отдельно, чтобы уйти от конкуренции за диск, а оно вон как. Может есть какие-нибудь ограничивающие настройки семого SQL сервера или здесь поможет ТОЛЬКО железный апгрейд с RAID полкой в 1000 IOPS'ов?
Alexander.Kudakov
#7 Оставлено : 15 марта 2011 г. 1:26:52(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
вы задаете ООчень специфичный вопрос на которой могут ответить те кто занимается оптимизацией производительности ежедневно и на практике. поэтому лучше обратиться например вот сюда social.msdn.microsoft.com/Forums/en/sqldatabaseengine/threads
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.