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

Скажите пожалуйста где я могу найти ответы на 2 следующих вопроса:

1. зачем mssql много оперативки? и если у него будет много оперативки, будет ли запрос выполнятся быстрее или главное быстрые диски?
2. Что такое I/O можно ли как то узнать заранее, сколько будет выполнятся запрос?
6 июн 17, 08:44    [20542055]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Воландар,

1) Потому что он читает все данные из кеша, чем туда больше влезит тем меньше надо читать с диска. Нет и Нет.
2) Никак, пока его не выполнишь.
6 июн 17, 08:50    [20542071]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
2a. http://www.webopedia.com/TERM/I/I_O.html
2b. нет
6 июн 17, 10:00    [20542204]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Воландар, первый раз данные будут читаться с диска, и чем быстрее диски, тем быстрее они прочитаются. При последующих чтениях чем больше оперативки, тем больше шансов, что данные останутся в кэше и будут читаться не с дисков, а из памяти, что сильно быстрее.
для OLTP систем процент данных, читаемых из памяти, должен приближаться к 100, т.е. вся оперативная информация, используемая в запросах, должна быть в кэше.
6 июн 17, 10:18    [20542257]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Minamoto,

автор
для OLTP систем процент данных, читаемых из памяти, должен приближаться к 100, т.е. вся оперативная информация, используемая в запросах, должна быть в кэше.
окак, а что ж тогда эти oltp делают?
6 июн 17, 10:20    [20542263]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
TaPaK
Minamoto,

автор
для OLTP систем процент данных, читаемых из памяти, должен приближаться к 100, т.е. вся оперативная информация, используемая в запросах, должна быть в кэше.
окак, а что ж тогда эти oltp делают?
Не понял вашего вопроса.
6 июн 17, 10:21    [20542269]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Minamoto,

Он не приближается к 100%, там и есть 100%. И она не то что должна быть в кеше, она только там и есть (чисто технически данные еще есть в СFP но эти файлы нужны только для обеспечения durability и увелечении скорости загрузки данных после старта).
6 июн 17, 10:35    [20542317]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
aleksrov
Minamoto,

Он не приближается к 100%, там и есть 100%. И она не то что должна быть в кеше, она только там и есть (чисто технически данные еще есть в СFP но эти файлы нужны только для обеспечения durability и увелечении скорости загрузки данных после старта).

Ну как бы первое чтение идет с диска, поэтому наличие одного чтения с диска автоматически лишает вас 100%. Вопрос в степени приближения к этим 100%.
6 июн 17, 10:37    [20542321]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
aleksrov
Minamoto,

Он не приближается к 100%, там и есть 100%. И она не то что должна быть в кеше, она только там и есть (чисто технически данные еще есть в СFP но эти файлы нужны только для обеспечения durability и увелечении скорости загрузки данных после старта).
Блаженны те, у кого база в памяти помещается.
6 июн 17, 10:52    [20542410]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Гавриленко Сергей Алексеевич,

Ну имелась ввиду таблица, в не вся БД :)
6 июн 17, 10:56    [20542442]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
o-o
Guest
aleksrov
Гавриленко Сергей Алексеевич,
Ну имелась ввиду таблица, в не вся БД :)

с чего это вдруг таблица в 400Гб поместится в 56Гб памяти, например?
не надо выдавать желаемое за действительное
6 июн 17, 10:59    [20542457]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
aleksrov
Member

Откуда:
Сообщений: 948
o-o,

Хотел написать, что или я вас не понимаю или вы меня, но перечитал тему и понял, что надо пойти попить кофе :)
Я почему то подумал про In memory OLTP, а не OLTP системе в целом, в общем мягко говоря мне привиделось.
6 июн 17, 11:47    [20542735]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
o-o
Guest
aleksrov
o-o,

Хотел написать, что или я вас не понимаю или вы меня, но перечитал тему и понял, что надо пойти попить кофе :)
Я почему то подумал про In memory OLTP, а не OLTP системе в целом, в общем мягко говоря мне привиделось.

...а я еще думаю, при чем тут CFP?
6 июн 17, 11:53    [20542762]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Воландар
Guest
Спасибо большое за ответы.
Если оперативка не нужна, то нужно ли процов побольше, чтобы в паралелить запросы?
Или достаточно SSD дисков?
6 июн 17, 20:10    [20544715]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1350
Воландар,

Вы сообщения не читаете чтоли?
Оперативка нужна и чем ее больше тем лучше.
Самым узким местом обычно является подсистема ввода-вывода, чем быстрее будут диски тем лучше, но это не отменяет того факта что наличие избыточного количества оперативной памяти является плюсом а не минусом.

Сегодня вам может хватать 10 Гб для буффер пула, завтра у вас вырастут базы и те 10 гб что были покажутся просто пшиком.
6 июн 17, 23:47    [20545169]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 27695
Воландар
Спасибо большое за ответы.
Если оперативка не нужна, то нужно ли процов побольше, чтобы в паралелить запросы?
Или достаточно SSD дисков?

Гы :) А Вы задавались вопросом какова скорость чтения с SSD и какова из RAM?
7 июн 17, 00:17    [20545243]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
автор
но это не отменяет того факта что наличие избыточного количества оперативной памяти является плюсом а не минусом

Не совсем верно:
https://support.microsoft.com/en-us/help/2413549/using-large-amounts-of-memory-can-result-in-an-inefficient-plan-in-sql-server
7 июн 17, 10:53    [20545872]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
Владислав Колосов
автор
но это не отменяет того факта что наличие избыточного количества оперативной памяти является плюсом а не минусом

Не совсем верно:
https://support.microsoft.com/en-us/help/2413549/using-large-amounts-of-memory-can-result-in-an-inefficient-plan-in-sql-server
Это статья к описанию трейс-флага. Видимо, какие-то маргинальные запросы себя так ведут.
7 июн 17, 12:20    [20546405]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
Гавриленко Сергей Алексеевич,

не то, чтобы маргинальные. Факт подобного поведения был при переезде на другой сервер.
7 июн 17, 12:32    [20546471]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Воландар
Guest
И еще вопрос:

Как узнать сколько всего памяти SQL Server потребляет одна конкретная сессия с учетом кэша?

И возможно ли это в принципе?

Ведь большинство памяти - это кэш БД.
22 мар 18, 09:16    [21276219]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Воландар
Guest
т.е. есть ли такой запрос, который четко покажет:

spid такой-то в данный момент отъел 100 Гб памяти, а spid секой-то 1 кб.
22 мар 18, 09:19    [21276222]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Воландар,

Вы можете посмотреть через sys.dm_exec_query_memory_grant сколько памяти потребовалось именно этому запросу для выполнения, так помимо прочего сколько требовалось, сколько дано, сколько использовано. Но это не имеет отношения к данным в кэше. В кэше лишь страницы с которыми работает SQL, они могут там быть или могут не быть (в последнем случае он должен будет их прочитать и туда поместить). Вот написанно что такое memory grant.
Grant parameters
When SQL server creates a compiled plan, it calculates two memory grant parameters called "required memory" and "additional memory".
•Required memory: Minimum memory needed to run sort and hash join. It is called required because a query would not start without this memory available. SQL server uses this memory to create internal data structures to handle sort and hash join.
•Additional memory: Amount needed to store all temporary rows in memory. This depends on the cardinality estimate (expected number rows and average size of row). This is called additional because a query can survive lack of such memory by storing part of temporary rows on hard disk. A query is not guaranteed to have the full amount if the total exceeds preset limit.
Вы можете посмотреть сколько clean\dirty страниц в кэше в разрезе БД, но насколько я знаю, что это за страницы, какой запрос и какая сессия их туда поместила посмотреть нельзя (во всяком случае стандартными средствами)
SELECT 
    database_id AS DatabaseID, 
   (CASE WHEN ([database_id] = 32767) THEN N'Resource Database' ELSE DB_NAME ([database_id]) END) AS N'Database Name', 
   (CASE WHEN ([is_modified] = 1) THEN N'Dirty' ELSE N'Clean' END) AS N'Page State', 
   COUNT (*) AS N'Page Count', 
   COUNT(file_id) * 8/1024.0 AS BufferSizeInMB 
FROM sys.dm_os_buffer_descriptors 
   GROUP BY [database_id], [is_modified] 
   ORDER BY [database_id], [is_modified]; 
GO 
22 мар 18, 09:37    [21276263]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Воландар
И еще вопрос:

Как узнать сколько всего памяти SQL Server потребляет одна конкретная сессия с учетом кэша?

И возможно ли это в принципе?

Ведь большинство памяти - это кэш БД.
Кэш данных не принадлежит какому либо пользователю/запросу/сессии и напрямую ими не особо то контролируется, это как бы общая память, поэтому невозможно получить то что вы хотите.

Да и вообще, судя по вашим вопросам, если оно уже работает, то я на вашем месте лучше бы ничего не трогал. А если у вас какая то проблема, то лучше бы вы проблему описали, либо начните с прочтения хотя бы одной книги о том как работает SQL Server и зачем ему память.
23 мар 18, 00:41    [21279200]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Воландар
И еще вопрос:

Как узнать сколько всего памяти SQL Server потребляет одна конкретная сессия с учетом кэша?

И возможно ли это в принципе?
Такой же вопрос:
Как узнать сколько всего места для данных на диске потребляет одна конкретная пользовательская сессия SQL Server?

Ответ - узнать это невозможно, потому что сессия - это поток выполнения команд, команды обращаются к памяти и файлам, и разделать использование памяти и диска по сессиям невозможно, т.к. команды из разных сессий могут обращаться к одному и тому же.
23 мар 18, 10:11    [21279703]     Ответить | Цитировать Сообщить модератору
 Re: 2 общих вопроса  [new]
uaggster
Member

Откуда:
Сообщений: 811
felix_ff
Воландар,

Вы сообщения не читаете чтоли?
Оперативка нужна и чем ее больше тем лучше.
Самым узким местом обычно является подсистема ввода-вывода, чем быстрее будут диски тем лучше, но это не отменяет того факта что наличие избыточного количества оперативной памяти является плюсом а не минусом.

Сегодня вам может хватать 10 Гб для буффер пула, завтра у вас вырастут базы и те 10 гб что были покажутся просто пшиком.

Только оно, если не энтерпрайз, больше 64 Гб (128 в случае 2016SP1) - всё равно не сожрёт.
Ну под репортинг сервис там или еще что - конечно, но не под сам сервер.

А так то да, конечно. Всего и побольше.
23 мар 18, 12:38    [21280358]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить