powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Потеряшки в sys.dm_os_buffer_descriptors
6 сообщений из 6, страница 1 из 1
Потеряшки в sys.dm_os_buffer_descriptors
    #40094664
Всем привет!

Код: 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
Потеряшки в sys.dm_os_buffer_descriptors
    #40094685
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ведущий профессионал,

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

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

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

а что значит "не соответствует ни одна страница"?
...
Рейтинг: 0 / 0
Потеряшки в sys.dm_os_buffer_descriptors
    #40094775
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ведущий профессионал
Как такое может быть? Что это за страницы?
Код: 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
Потеряшки в sys.dm_os_buffer_descriptors
    #40095409
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
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Потеряшки в sys.dm_os_buffer_descriptors
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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