Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Добрый день.

Имею машину в облаке Амазона c 2008 R3.
Имею два Striped раздела собранные из трех SSD дисков (виртуальных конечно) с максимальным IOPS как только Амазон может дать - 20000.
Тестирую диски CristalDiskMark - 700~800 MB/s
Помещаю на один диск базу - в ней есть табличка на 200GB. Select top 100000000 из этой таблицы ~13GB.
Делаю select top 100000000 * into таблица в другой базе, которая лежит на другом диске. Длится такой запрос около 4 сек.
Наблюдаю за сервером через ResourceMonitor - скорость записи в базу 64MB/s. Диск занят на 24% длинна очереди не выще 0,5.
Включаю CristalDiskMark на диске куда делаю запись - диск занят на 94%, очередб к диску ~20. Общая скорость записи - положенные 750MB.

У меня такое впечатление сервер не использует диски на полную. В чём причина?

Прошу помочь разобраться.

Спасибо.
8 окт 15, 18:46    [18254833]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для выполнения ваших запросов не только диски требуются.
8 окт 15, 18:49    [18254853]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Ну я так понимаю память... Куда смотреть, что мерять?
8 окт 15, 18:54    [18254871]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
Ну я так понимаю память...
Процессор ...
beggar_21
Куда смотреть, что мерять?
Смотреть в сторону вашего теста.
8 окт 15, 18:57    [18254881]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Процессор загружен на 1%

Выяснилось следующие: запускаю параллельно запросы из разных сессий и скорость записи на диск пропорциональна количеству запросов с множителем 64~70. Такое впечатление что одному потоку разрешено писать не быстрее 64 МБ/с.

Но когда, например, создаю базу с файлом лога на 50 ГБ - то запись, форматирование лога, работает на все 500~600МБ/с
8 окт 15, 19:06    [18254922]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
Выяснилось следующие: запускаю параллельно запросы из разных сессий и скорость записи на диск пропорциональна количеству запросов с множителем 64~70. Такое впечатление что одному потоку разрешено писать не быстрее 64 МБ/с.
У вас слишком упрощенное понимание того, как и сколько потоков сервер может использовать для выполнения запросов.
8 окт 15, 19:09    [18254935]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Мне пойти и повысить уровень своего понимания, года так на три? Так что бы не задавать вопросов на форуме...
Так я тут как раз для повышения уровня понимания.

А если серьёзно, есть ли какое-то ограничение как один поток может использовать диск?
8 окт 15, 19:15    [18254956]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
А если серьёзно, есть ли какое-то ограничение как один поток может использовать диск?
Вы же сами только что убедились, что нет никаких ограничений.
8 окт 15, 19:19    [18254969]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Я как раз думаю что есть.
8 окт 15, 19:30    [18255006]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
Я как раз думаю что есть.

beggar_21
Но когда, например, создаю базу с файлом лога на 50 ГБ - то запись, форматирование лога, работает на все 500~600МБ/с


Вы уж определитесь, 64 или 600 Мб / сек.
8 окт 15, 19:35    [18255021]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
При форматировании лога - нет ограничений. А если это запрос - то получается что есть.
8 окт 15, 19:37    [18255028]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
beggar_21,

соберите ожидания сессии, выполняющей, select * into... и посмотрите что у вас в top вылезет.
8 окт 15, 19:41    [18255044]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
При форматировании лога - нет ограничений. А если это запрос - то получается что есть.
Файл лога тоже создается запросом, а не сам по себе.

Вы причину и следствие путаете. Если, к примеру, те процессорные мощности, что задействованы при выполнении вашего запроса, не в состоянии обработать более 64 Мб/сек, то такая скорость записи и будет. А вы тут пытаетесь втереть, что все наоборот: сервер медленно выполняет запрос, потому что у него ограничение там какое-то по записи на диск есть.

Сообщение было отредактировано: 8 окт 15, 19:51
8 окт 15, 19:44    [18255065]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
У меня нет вопросов производительности. Я пытаюсь выяснить почему так происходит.
Ещё раз повторюсь: я читаю из одной базы и ложу данные в другую базу. Никаких группировок, вычислений не происходит.

запрос такой
(случай #1)
select top 10M * into base_2..table_1
from base_1..table_1
занимает 4 минуты

Если так

(случай #2)
select top 10M * into base_2..table_1
from base_1..table_1
go
select top 10M * into base_2..table_2
from base_1..table_1
go

то 8 секунд (ожидаемо)

(случай #3)
Если параллельно, в разных окнах SMS - то те же 4 секунды.
В первом случае #1 я вижу что процесс пишет со скоростью 64МБ/сек, в случае #2 те же 64МБ/сек. Случай #3 - 130МБ/сек
Если тупо рассуждать - то запросам в разных окнах разрешено писать на диск не быстрее 64MБ/сек.

Памяти у меня 220GB и 32 ядра. Память почти вся свободна, ядра простаивают.
8 окт 15, 20:19    [18255236]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Я выше перепутал секунды с минутами. Правильно 4минуты, 8 минут и 4 минуты.
8 окт 15, 20:22    [18255253]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
занимает 4 минуты
Минуты или секунды?
beggar_21
Если тупо рассуждать - то запросам в разных окнах разрешено писать на диск не быстрее 64MБ/сек.
facepalm.jpg
8 окт 15, 20:24    [18255262]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Всё в минутах. Не надо фейспалмов.
8 окт 15, 20:26    [18255279]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
Всё в минутах. Не надо фейспалмов.
А что тогда вам надо, чтобы вы перестали пороть чушь про какие-то вами придуманные ограничения?

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

Увы, с оптимизацией запросов не все так просто, кнопки "работать быстро" нет.

Сообщение было отредактировано: 8 окт 15, 20:34
8 окт 15, 20:32    [18255302]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
еща раз.... Запрос такой что там нечего оптимизировать. План запроса тупой скан. Таблица источник содержит одну varchar колонку. Назначение такое же. Запрос делает тупой insert into. Одна сессия пишет со скоростью 64МБ/сек, две параллельные 130, три параллельные 200 МБ/сек и т.д. То что ограничения быть не может я понимаю. Но вот такой вот факт. Причём я пробовал на разных таблицах - интовые значения, строки, смешанные - и получается всегда один и тот же результат 64-130-200 и т.д. Для меня это странное поведение.
8 окт 15, 20:46    [18255335]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
еща раз.... Запрос такой что там нечего оптимизировать. План запроса тупой скан. Таблица источник содержит одну varchar колонку. Назначение такое же. Запрос делает тупой insert into.
Это вы так пересказываете план выполнения?
beggar_21
Для меня это странное поведение.
А для меня это нормальное поведение для любого случая, когда узким местом не является диск. А он у вас не является узким местом.
8 окт 15, 20:49    [18255343]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
Хорошо. Куда смотреть? Как найти бутылочное горлышко?
8 окт 15, 20:51    [18255346]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
beggar_21
Хорошо. Куда смотреть? Как найти бутылочное горлышко?
Для начала в план выполнения жи.
8 окт 15, 20:53    [18255350]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
beggar_21
Member

Откуда:
Сообщений: 27
что такое жи?
8 окт 15, 20:57    [18255362]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
+
beggar_21
что такое жи?
Часть речи, частица "же". Вы не отвлекайтесь.
8 окт 15, 21:02    [18255383]     Ответить | Цитировать Сообщить модератору
 Re: Сервер не использует все пропускную способность диска.  [new]
o-o
Guest
beggar_21
Таблица источник содержит одну varchar колонку. Назначение такое же. Запрос делает тупой insert into.

А это случайно не varchar(max) с достаточно длинными строками?
Просто у нас есть таблица с ntext, она часами переливается, а конвертация к nvarchar(max) при select into не улучшила время выполнения нисколько. И строки действительно здоровые и от этого max не уйти.
Так он хранит LOBы в дереве, но это не нормальное B-TREE, а натуральное говнодерево, что чтение, что запись этих ntext/nvarchar(max) -- жуткий тормоз
8 окт 15, 21:47    [18255553]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить