Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 September 25

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
вьюха sys.dm_db_index_usage_stats.
В столбце user_updates у класт.индекса PK__ORDERS__5CC1BC92 количество обновлений больше в 20 раз, чем суммарно строчек в таблице. Как это понимать - это общее число операций insert, update, delete по всей таблице (так как кластеризованный индекс покрывает всю таблицу), или это количество I,U,D конкретно суррогатного интового поля, по которому определён индекс?
Number of updates by user queries. This includes Insert, Delete, and Updates representing number of operations done not the actual rows affected. For example, if you delete 1000 rows in one statement, this count increments by 1

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-index-usage-stats-transact-sql?view=sql-server-ver15
источник

О奧

Олег 奧列格 (Ào liè gé)... in SqlCom.ru - Стиль жизни SQL
У меня есть табличка - 95к строк, 235 миллионов обновлений, данные очень горячие, у вас видимо так же, плюс приложение без необходимости обновляет данные.
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
да, это общее число операций insert, update, delete

set nocount on;

create table find_mean_or_user_updates_column (
a int constraint PK_20200925 primary key identity
, b int
, c int);
;

insert into find_mean_or_user_updates_column(b) values (default);
insert into find_mean_or_user_updates_column(b) values (default);
insert into find_mean_or_user_updates_column(b) values (default);

declare @si_index_id int
 , @object_id int = OBJECT_ID('find_mean_or_user_updates_column', 'u')
 , @index_name varchar(200);


select si.name,  us.*
from sys.dm_db_index_usage_stats as us
inner join sys.indexes as si on si.object_id = us.object_id
 and us.index_id = si.index_id
where us.object_id = @object_id
order by us.index_id;
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
update find_mean_or_user_updates_column
set b=1
where a = 3;

update find_mean_or_user_updates_column
set b=1
where a = 3;

update find_mean_or_user_updates_column
set b=1
where a = 3;

declare @si_index_id int
 , @object_id int = OBJECT_ID('find_mean_or_user_updates_column', 'u')
 , @index_name varchar(200);


select si.name,  us.*
from sys.dm_db_index_usage_stats as us
inner join sys.indexes as si on si.object_id = us.object_id
 and us.index_id = si.index_id
where us.object_id = @object_id
order by us.index_id;
источник

Y

Yura in SqlCom.ru - Стиль жизни SQL
Всем привет. Есть ли дебаггер в ssms 18 ?  Не могу найти ни в студии, ни в инете
источник

KS

Kodd Shredinger in SqlCom.ru - Стиль жизни SQL
Yura
Всем привет. Есть ли дебаггер в ssms 18 ?  Не могу найти ни в студии, ни в инете
Нормального нет с 2005 ssms
источник

KS

Kodd Shredinger in SqlCom.ru - Стиль жизни SQL
Надо либо ставить расширение, либо в VS
источник

KS

Kodd Shredinger in SqlCom.ru - Стиль жизни SQL
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
ILYA
Если у вас есть кластерный индекс то это и есть ваша таблица... И как связано количество обновлений кластерного индекса с количеством строчек в таблице? Я могу таблицу с одной строкой обновить миллион раз например
строчки в таблице были связаны с этой частью вопроса
это количество I,U,D конкретно суррогатного интового поля, по которому определён индекс?
То есть, это явно не могло быть количеством инсертов. Если мы user_update отвечал только за обновление столбца, по которому определён класт.индекс, то это значило бы пипец - значит, по первичному ключу происходят удаления (не предусмотрено бизнес логикой), или того хуже, обновления первичного ключа
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
да, это общее число операций insert, update, delete

set nocount on;

create table find_mean_or_user_updates_column (
a int constraint PK_20200925 primary key identity
, b int
, c int);
;

insert into find_mean_or_user_updates_column(b) values (default);
insert into find_mean_or_user_updates_column(b) values (default);
insert into find_mean_or_user_updates_column(b) values (default);

declare @si_index_id int
 , @object_id int = OBJECT_ID('find_mean_or_user_updates_column', 'u')
 , @index_name varchar(200);


select si.name,  us.*
from sys.dm_db_index_usage_stats as us
inner join sys.indexes as si on si.object_id = us.object_id
 and us.index_id = si.index_id
where us.object_id = @object_id
order by us.index_id;
но эта версия уже отпала
источник
2020 September 26

e

engliwdevil_ in SqlCom.ru - Стиль жизни SQL
привет всем!
источник

e

engliwdevil_ in SqlCom.ru - Стиль жизни SQL
есть таблица с id, county, city, population.
типа
usa    ny    800
usa    la      700
kz       a       67
kz       y       55
kz      o         66
нужно получить такую
usa    ny    800     700
usa    la      700
kz       a       67      55
kz       y       55      66
kz      o         66


при том, нужно задействовать 10 параллельных
сессий.
хотел спросить, можете помочь объяснить, что такое параллельные сессии?
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
engliwdevil_
есть таблица с id, county, city, population.
типа
usa    ny    800
usa    la      700
kz       a       67
kz       y       55
kz      o         66
нужно получить такую
usa    ny    800     700
usa    la      700
kz       a       67      55
kz       y       55      66
kz      o         66


при том, нужно задействовать 10 параллельных
сессий.
хотел спросить, можете помочь объяснить, что такое параллельные сессии?
Похоже, что подразумевается, что нужно  делать это в несколько соединений одновременно (через несколько вкладок в ide, или через несколько потоков в приложении ). Каждому соединению соответствует свой session_id (spid)
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Зачем - непонятно, этот результат получается одним запросом
источник

P

Petr in SqlCom.ru - Стиль жизни SQL
engliwdevil_
есть таблица с id, county, city, population.
типа
usa    ny    800
usa    la      700
kz       a       67
kz       y       55
kz      o         66
нужно получить такую
usa    ny    800     700
usa    la      700
kz       a       67      55
kz       y       55      66
kz      o         66


при том, нужно задействовать 10 параллельных
сессий.
хотел спросить, можете помочь объяснить, что такое параллельные сессии?
На сколько знаю mssql сам выбирает параллельную обработку при построении плана.
источник

P

Petr in SqlCom.ru - Стиль жизни SQL
Потоки режутся на уровне БД и не управляются самим пользователю
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
engliwdevil_
есть таблица с id, county, city, population.
типа
usa    ny    800
usa    la      700
kz       a       67
kz       y       55
kz      o         66
нужно получить такую
usa    ny    800     700
usa    la      700
kz       a       67      55
kz       y       55      66
kz      o         66


при том, нужно задействовать 10 параллельных
сессий.
хотел спросить, можете помочь объяснить, что такое параллельные сессии?
Сессия - это одно соединение с СУБД
источник

К

Какой-то Хмырь... in SqlCom.ru - Стиль жизни SQL
Petr
Потоки режутся на уровне БД и не управляются самим пользователю
там есть параметр maxdop, который может быть изменен пользователем для конкретного запроса с помощью хинта.

и есть еще cost threshold который указывает стоимость запроса, после которой начинается распараллеливание. эту настройку внутри пользовательской сессии не поменять
источник

KS

Kodd Shredinger in SqlCom.ru - Стиль жизни SQL
Petr
На сколько знаю mssql сам выбирает параллельную обработку при построении плана.
Но есть хинты к запросам, настройки на уровне экземпляра скуля и с 2016 версии-на уровне БД
источник
2020 September 27

M

Mykhailo in SqlCom.ru - Стиль жизни SQL
Привет. А что 70-461 больше не будет. Планируют ли что то в замен по sql?
источник