Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Потеряшки в sys.dm_os_buffer_descriptors / 6 сообщений из 6, страница 1 из 1
02.09.2021, 06:20
    #40094664
Потеряшки в sys.dm_os_buffer_descriptors
Всем привет!

Код: sql
1.
2.
3.
4.
5.
6.
SELECT bd.*
FROM
	sys.dm_os_buffer_descriptors bd
	LEFT JOIN sys.allocation_units au ON au.allocation_unit_id = bd.allocation_unit_id
WHERE bd.database_id = DB_ID()
AND au.allocation_unit_id IS NULL



Вот такой запрос выдаёт страницы, которые есть в буферном кэше, но им не соответствует ни одна страница на диске в базе. Как такое может быть? Что это за страницы?
...
Рейтинг: 0 / 0
02.09.2021, 09:17
    #40094685
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеряшки в sys.dm_os_buffer_descriptors
Ведущий профессионал,

sys.dm_os_buffer_descriptors (Transact-SQL)
Возвращает сведения обо всех страницах данных, расположенных в данный момент в буферном пуле SQL Server .

sys.allocation_units (Transact-SQL)
Содержит одну строку для каждой единицы распределения в базе данных .
...
Рейтинг: 0 / 0
02.09.2021, 09:49
    #40094693
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеряшки в sys.dm_os_buffer_descriptors
архивариус,

поторопился с ответом, невнимательно запрос посмотрел
...
Рейтинг: 0 / 0
02.09.2021, 10:48
    #40094727
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеряшки в sys.dm_os_buffer_descriptors
Ведущий профессионал,

а что значит "не соответствует ни одна страница"?
...
Рейтинг: 0 / 0
02.09.2021, 12:19
    #40094775
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеряшки в sys.dm_os_buffer_descriptors
Ведущий профессионал
Как такое может быть? Что это за страницы?
Код: 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.
use tempdb;
set ansi_nulls, quoted_identifier, xact_abort on;
go

create table dbo.t (id int identity primary key, s char(8000));
insert into dbo.t
 (s)
 select top (100)
  'a'
 from
  master.dbo.spt_values a cross join
  master.dbo.spt_values b;
go

drop table if exists #t;

select
 bd.*
into
 #t
from
 sys.partitions p join
 sys.allocation_units au on au.container_id = p.hobt_id join
 sys.dm_os_buffer_descriptors bd on bd.database_id = db_id() and bd.allocation_unit_id = au.allocation_unit_id
where
 p.object_id = object_id('dbo.t', 'U');
go

drop table dbo.t;

select
 au.allocation_unit_id as [sys.allocation_units allocation_unit_id], bd.*
from
 #t t join
 sys.dm_os_buffer_descriptors bd on bd.database_id = t.database_id and bd.file_id = t.file_id and bd.page_id = t.page_id left join
 sys.allocation_units au on au.allocation_unit_id = t.allocation_unit_id;
go
...
Рейтинг: 0 / 0
06.09.2021, 10:09
    #40095409
Потеряшки в sys.dm_os_buffer_descriptors
komrad
Ведущий профессионал,

а что значит "не соответствует ни одна страница"?


https://docs.microsoft.com/ru-ru/sql/relational-databases/system-dynamic-management-views/sys-dm-os-buffer-descriptors-transact-sql?view=sql-server-ver15

Там примеры А и Б.

У меня на примере А показывает кучу гигабайт памяти в одной из баз. Но, пример Б на ней же показывает почти 0. Отсюда и проблема. Эти два примера приводятся на куче сайтов, но, нигде этот глюк не описан.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Потеряшки в sys.dm_os_buffer_descriptors / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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