Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скорость записи данных на диск / 21 сообщений из 21, страница 1 из 1
24.01.2018, 15:10
    #39590135
AngryError
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
Здравствуйте знатоки!
Возник следующий вопрос:
Есть некая БД. Системные базы, файл MDF и LDF лежат локально на диске C:\
При проверке диска утилитой diskspd с параметрами (-c5G -d300 -r -w100 -t8 -o8 -b8K -h -L C:\Temp\testfile.dat) выдает, в среднем, 150-200мб/сек скорость записи на диск (смотрю через perfmon.exe).
Модель восстановления - Simple

Если я сделаю бесконечный цикл, в котором буду вставлять данные в тестовую таблицу (1 столбец, без индексов и т.д.), скорость обращения к диску будет в районе 30-35мб/сек.

Если я создам табличную переменную, и буду заливать данные в нее, скорость обращения к диску не будет превышать 20-21мб/сек.

Вопрос: что в моем примере гасит скорость записи? Операции переноса данных между логом и mdf?
...
Рейтинг: 0 / 0
24.01.2018, 15:12
    #39590137
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryError,

ну переменные таблицы не логируются, вот в ldf и не пишем
...
Рейтинг: 0 / 0
24.01.2018, 15:19
    #39590144
AngryError
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
TaPaK,
Ок, но почему тогда скорость в этом случае не выросла?)
Я видимо чего-то не понимаю

Скорость записи на диск 100мб/сек, а база может писать только 20-30мб в сек?
...
Рейтинг: 0 / 0
24.01.2018, 15:20
    #39590146
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryError,

но ведь генерируем запсь не с бесконечно большой скоростью. Хотя может есть и другие параметры
...
Рейтинг: 0 / 0
24.01.2018, 15:22
    #39590149
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryError,
авторСкорость записи на диск 100мб/сек, а база может писать только 20-30мб в сек?
сгенерируйте таблицу на 1кк и бесконечно сливайте её в другую, будет другая нагрузка на диск
...
Рейтинг: 0 / 0
24.01.2018, 15:28
    #39590154
sdgth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryError,

А вы в несколько потоков попробуйте
...
Рейтинг: 0 / 0
24.01.2018, 15:31
    #39590160
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryErrorВопрос: что в моем примере гасит скорость записи? Операции переноса данных между логом и mdf?Ожидание завершения транзакции?
Попробуйте обернуть ваш цикл снаружи командами
begin tran
commit tran
...
Рейтинг: 0 / 0
24.01.2018, 15:46
    #39590171
AngryError
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
TaPaK,
Верно. В случае переноса данных из другой таблицы, скорость вырастает до 50-70 мб/сек.
Это связано с тем, что я данные "из воздуха" беру?

alexeyvg,
К сожалению, конкретно в моем примере - не дало прироста к производительности.
...
Рейтинг: 0 / 0
24.01.2018, 15:48
    #39590173
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryErrorTaPaK,
Верно. В случае переноса данных из другой таблицы, скорость вырастает до 50-70 мб/сек.
Это связано с тем, что я данные "из воздуха" беру?

alexeyvg,
К сожалению, конкретно в моем примере - не дало прироста к производительности.\
нууу
открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, достала деньги, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку.

и так миллион раз :)
...
Рейтинг: 0 / 0
24.01.2018, 15:54
    #39590181
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryErrorат локально на диске C:\
сжатие для драйва с небоюсь по умолчанию включенно ?
...
Рейтинг: 0 / 0
24.01.2018, 15:57
    #39590182
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
TaPaKну переменные таблицы не логируютсяОчень даже логируются. Ибо иначе никак.
В результатах fn_dblog tempdb эти транзакции поименованы как TVQ.
...
Рейтинг: 0 / 0
24.01.2018, 16:10
    #39590195
AngryError
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
TaPaK,

Еще 1 небольшой пример.
Усложним предыдущую ситуацию, разделив MDF и LDF на разные диски.
В этом случае, как показывает perfmon.exe - нагрузка на запись поделится примерно пополам между этими дисками.
С чем это может быть связано?
мое ИМХО - что данные сначала попадают в лог, и потом чекпоинтом переносятся в MDF.
или есть какие-то данные, которые попадают сразу в MDF ?
...
Рейтинг: 0 / 0
24.01.2018, 16:51
    #39590230
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryErrorили есть какие-то данные, которые попадают сразу в MDF ?
в случае minimally logged operations страницы данных пишутся на диск еще до коммита by eager writer,
т.е. независимо от чекпойнта.
и только когда все они записаны на диск,
log records, в которых в общем-то и нет самих данных, только page allocations,
относящиеся к этой minimally logged operation, будут сброшены на диск.

разумеется, если еще что-то, что не есть минимально логируемое,
коммитится в процессе этого минимально логируемого балка, то лог сбрасывается в связи с теми другими коммитами.
TaPaKну переменные таблицы не логируются, вот в ldf и не пишем
здрасьте приехали.
разумеется, и они тоже логируются
...
Рейтинг: 0 / 0
24.01.2018, 16:56
    #39590237
sdgth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
...
Рейтинг: 0 / 0
24.01.2018, 16:56
    #39590238
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
invm, Yasha123

виновать по всем пунктам :)
...
Рейтинг: 0 / 0
24.01.2018, 17:35
    #39590291
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryErrorК сожалению, конкретно в моем примере - не дало прироста к производительности.Реально??? А код покАжите?
...
Рейтинг: 0 / 0
24.01.2018, 18:28
    #39590327
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
alexeyvgAngryErrorК сожалению, конкретно в моем примере - не дало прироста к производительности.Реально??? А код покАжите?
вполне себе реально.
у него же бесконечный цикл.

вы хотели сэкономить на сбросе каждой строки инсерта в лог,
ибо получаем тучу мини-транзакций в режиме автокоммита?
а если все делать в одной транзакции, то типа записи лога не будут на диск сбрасываться?
но ведь все равно будут, буфер лога всего 60Кб, заполнили-сбросили.
да, сбрасывание будет происходить реже, зато теперь лог перестанет перезаписываться
(у ТС простая модель)
бесконечный цикл, да поди еще в тестовой базе с дефолтным размером/приращением лога
-> теперь он будет еще и на занулении лога ждать, ибо лог будет распирать
...
Рейтинг: 0 / 0
24.01.2018, 20:44
    #39590419
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
Yasha123вы хотели сэкономить на сбросе каждой строки инсерта в лог,
ибо получаем тучу мини-транзакций в режиме автокоммита?
а если все делать в одной транзакции, то типа записи лога не будут на диск сбрасываться?Вот у меня сейчас цикл на миллион выполнился в транзакции в 9 раз быстрее, и запись на диск была в 10 раз интенсивнее (в mdf, а в ldf в 2 раза)
Это же классика - заменить мелкие транзакции (например в цикле) на одну большую.
Как минимум будет меньше записи в лог, потому что для транзакции записывается служебная информация.

Ну и теоретически есть ожидание завершения (физической) записи в лог перед возвратом управления после комита транзакции.
Этому, правда, помогает кеширование, в том числе на контроллерах с батарейкой, но оно же в любом случае менее эффективное, чем внутри сиквела формировать запись в память, и линейно (и параллельно) её сбрасывать в лог-файл.

примерный тест
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
create table test_perf
(
	id int identity primary key clustered,
	name	char(10)
)

set nocount on
go
truncate table test_perf
go
select getdate()
declare @i int = 0
while @i < 1000000
begin
	insert test_perf(name)
	values('asdfghjkl;')
	set @i = @i + 1
end
select getdate()
go
truncate table test_perf
go
select getdate()
begin transaction
declare @i int = 0
while @i < 1000000
begin
	insert test_perf(name)
	values('asdfghjkl;')
	set @i = @i + 1
end
commit transaction
select getdate()

2018-01-24 20:27:23.720
2018-01-24 20:32:45.737
5:22

2018-01-24 20:34:10.360
2018-01-24 20:34:51.717
0:41

...
Рейтинг: 0 / 0
24.01.2018, 22:21
    #39590456
nvv
nvv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryError,
Скорость последовательного доступа к диску и IOPS понятия обратно зависимые. Больше операций - меньше скорость. Это характерно для любых дисков.
...
Рейтинг: 0 / 0
24.01.2018, 23:28
    #39590490
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
nvvAngryError,
Скорость последовательного доступа к диску и IOPS понятия обратно зависимые. Больше операций - меньше скорость. Это характерно для любых дисков.Так ТС вставляет в пустую таблицу без индексов, то есть скорее всего записывает последовательно некоторое количество секторов.
...
Рейтинг: 0 / 0
26.01.2018, 18:53
    #39591888
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость записи данных на диск
AngryError,

виртуалка, что ли?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скорость записи данных на диск / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]