DataInternalsRu
DataInternalsRu
  • 22
  • 50 761
PSSDIAG & SQLNEXUS
Как собрать xEvent, perfmon, лог файлы и много другое одним нажатием кнопки - правильно, это PSSDIAG или DiagManager.
В этом видео расскажу про эту утилиту, какие сценарии использования и как собранные данные проанализировать утилитой SQLNexus. Приятного просмотра!
Ссылки по теме -
PSSDIAG_v_15_21_06_23
github.com/Microsoft/DiagManager/releases
SQL Nexus 7.21.03.26
github.com/microsoft/SqlNexus/releases/tag/7.21.03.26
Перед тем как воспользоваться утилитой SQLNexus нужно установить следующие пакеты: SQLSysClrTypes
download.microsoft.com/download/B/1/7/B1783FE9-717B-4F78-A39A-A2E27E3D679D/ENU/x86/SQLSysClrTypes.msi
ReportViewer control (ReportViewer.msi) download.microsoft.com/download/B/1/7/B1783FE9-717B-4F78-A39A-A2E27E3D679D/ENU/x86/ReportViewer.msi
RML Utilities (RMLSetup_AMD64.msi) github.com/microsoft/SqlNexus/releases/download/09.04.0097/RMLSetup_AMD64.msi
Задать вопросы и узнать обо мне можно тут: www.linkedin.com/in/AlexanderBereznev/ К слову сказать, не стесняемся, добавляемся в Linkedin сеть!
Переглядів: 688

Відео

Обслуживание статистики=рост TempDB? xEvent Часть2 xEvent usage for statistic update troubleshooting
Переглядів 6084 роки тому
Вторая серия про использование tempDB при обслуживании колоночной статистики. Разберем какие расширенные события xEvent можно использовать для понимания причин происходящего и диагностики. Расскажу про несколько сумасшедших решений, которые пришли в голову. Видео вышло аж на 50 минут, полуторная скорость вам в помощь! :) В конце есть небольшой бонус в виде одного интересного решения, если вы та...
Обслуживание статистики=рост TempDB? Часть1 TempDB usage during Column statistics maintenance.Part1
Переглядів 8074 роки тому
Интересный случай использования ресурсов tempDB. В этот раз "поймали за хвост" колоночную статистику. Почему так происходит и как индентифицировать проблему - смотрите в видео. Это только первая часть. На подходе использование xEvent-ов в обнаружении проблемы, ну и конечно, варианты решения. Часть 2 - ua-cam.com/video/TdhhT5TqqAw/v-deo.html Полезные DMV - sys.dm_db_session_space_usage , sys.dm_...
SQL Server 2019 Intelligent query processing. Batch Mode on Rowstore
Переглядів 5305 років тому
Хочу разобраться еще в одной интересной штуковине, которая прилетит к нам в релизе SQL Server 2019 и с уровнем совместимости 150 - это Batch Mode on Rowstore. Отличная штука, которая ускоряет обработку больших объемовов прямо в коде SQL Server. Посмотрю что там с планами запросов, какие отличия, какие показатели производительности, а на закуску поковырям немного Windows Performance Toolkit. Соб...
SQL Server 2019. Intelligent query processing. Memory Grant Feedback
Переглядів 6445 років тому
Жду релиза нового SQL 2019 и начинаю разбираться какие "плюшки" он нам готовит. Начну с бренда Intelligent query processing и первой фичей, которую посмотрел стал Memory Grant Feedback. Мега крутая штука, которая надеюсь избавит от части проблем, надо только уметь "готовить". А чтобы уметь правильно готовить надо знать плюсы и минусы, вот с этого и начну. Приятного просмотра! Задать вопросы и у...
Завершаем миграцию SQL2012-SQL2017. Собираем AlwaysOn и перекатываем ресурсы.
Переглядів 4075 років тому
Шестая часть из серии StepByStep миграция с SQL2012 на SQL2017. Делаем настройку кластерной группы SQL-ля в условиях разнородных версий Windows 2012R2 и Windows 2016. Мигрируем пользователей с сохранением паролей, полномочий и т.д. Все видео из этой серии: Анонсирую серию видео! Windows 2012R2 Cluster, SQL Server 2012 Cluster и миграция на WIN2016 SQL2017 ua-cam.com/video/PYKTTy5ujIw/v-deo.html...
Мигрируем пользователей c SQL Server 2012 на SQL Server 2017 и настраиваем кластерную группу
Переглядів 6685 років тому
Пятая часть из серии StepByStep миграция с SQL2012 на SQL2017. Делаем настройку кластерной группы SQL-ля в условиях разнородных версий Windows 2012R2 и Windows 2016. Мигрируем пользователей с сохранением паролей, полномочий и т.д. Все видео из этой серии: Анонсирую серию видео! Windows 2012R2 Cluster, SQL Server 2012 Cluster и миграция на WIN2016 SQL2017 ua-cam.com/video/PYKTTy5ujIw/v-deo.html ...
Disk performance problems in SQL Server Анализ производительности дисков в SQL Server
Переглядів 2 тис.5 років тому
Расскажу про анализ проблем производительности дисковых подсистем в SQL Server и Windows. Хватит уже слушать про вечно работающие хорошо диски от админов, давайте уже аргументированно доказывать свою правоту!:) Пусть теперь у админа SQL все будет хорошо, а виноваты в тормозах все остальные:) Посмотрим на любимые DMV, Disk Waits, заглянем в Perfmon counters и в завершении Windows Performance Too...
Добавляем узел Windows 2016 в кластер Windows2012R2 Step By Step
Переглядів 5795 років тому
Четвертая часть из серии StepByStep миграция с SQL2012 на SQL2017. Добавляем к существующему кластеру на базе Windows 2012 R2 узел с установленной Windows 2016 и SQL Server 2017. ДА!!! так можно было:)))) Параллельно наступаем на забавные грабли, но исход вполне радужный, теперь можно смело идти и настраивать AlwaysON, но об этом в следующей серии! Все видео из этой серии: Анонсирую серию видео...
SQL Server Failover Cluster Installation Step By Step. Установка и конфигурация
Переглядів 2,6 тис.5 років тому
Третья инструкция из серии StepByStep миграция с SQL2012 на SQL2017. Если вы не собирали кластера на базе SQL Server 2012, то скорее смотрите видео, это интересно:) В видео соберем кластер, протестируем перекат ресурсов. Анонсирую серию видео! Windows 2012R2 Cluster, SQL Server 2012 Cluster и миграция на WIN2016 SQL2017 ua-cam.com/video/PYKTTy5ujIw/v-deo.html 1. Windows 2012R2 Cluster Installat...
iSCSI Target & iSCSI Initiator Step By Step. Установка и конфигурация
Переглядів 5 тис.5 років тому
Вторая инструкция из серии StepByStep миграция с SQL2012 на SQL2017. В этом видео установим компонент iSCSI target и iSCSI Initiator на узлы кластера. Все ради того, чтобы был у узлов кластера общий диск, без него никак:) Заодно разберемся, как это все настроить и подключить. Все видео из этой серии: Анонсирую серию видео! Windows 2012R2 Cluster, SQL Server 2012 Cluster и миграция на WIN2016 SQ...
Windows 2012R2 Cluster Installation Step By Step. Устанавливаем и конфигурируем кластер
Переглядів 3,8 тис.5 років тому
Первая инструкция из серии StepByStep миграция с SQL2012 на SQL2017. Чтобы все хорошенько протестировать сначала надо собрать инфраструктуру, с которой будем мигрировать, вот этим и займемся! Соберем кластер на Windows 2012R2, сконфигурируем кворум File share witness. Приятного просмотра! Все видео из этой серии: Анонсирую серию видео! Windows 2012R2 Cluster, SQL Server 2012 Cluster и миграция ...
Анонсирую серию видео! Windows 2012R2 Cluster, SQL Server 2012 Cluster и миграция на WIN2016 SQL2017
Переглядів 1 тис.5 років тому
Расскажу про задачку, которую поставил себе и которую планирую реализовать и заснять:) Вся серия видео будет сделана по принципу Step By Step, повторить сможет любой! глобальная цель: Миграция с Win2012R2 и SQL2012 на Win2016 и SQL2017 посредством SQL Server AlwaysON!!! Этапы: 1. Собираем кластер на базе Win2012R2 2. Настраиваем общей диска iSCSI 3. Собираем кластер на базе SQL Server 2012 Dev ...
SQL Server SSMS Performance Dashboard
Переглядів 5586 років тому
Сегодня расскажу про утилиту, встроенную в SSMS - Performance Dashboard. Если нет любимых скриптов под рукой, не беда, на выручку придется Perf Dashbord! Приятного просмотра! О Perf Dashboard от SQL Tiger team blogs.msdn.microsoft.com/sql_server_team/new-in-ssms-performance-dashboard-built-in/ SQL Server Wait Types Library от Paul Randal www.sqlskills.com/help/waits/ Мой LinkedIn www.linkedin.c...
SQL Server Index Fragmentation on SSD. Фрагментация индексов и SSD диск
Переглядів 1,7 тис.6 років тому
Располагаем файл данных на SSD носителе и проводим эксперимент с фрагментацией индексов и влиянием на производительность. Расскажу про readahead механизм, посмотрим на операции IO через призму xEvent и на дисковые IO со стороны windows xperf-ом. Всего 3 эксперимента, плюс небольшой бонус в виде небольшого powerBi отчета. Приятного просмотра! Мой LinkedIn www.linkedin.com/in/AlexanderBereznev/ С...
SQL Server 2017 TempDB usage или как понять, какой "злодей" использует tempDB
Переглядів 1,6 тис.6 років тому
SQL Server 2017 TempDB usage или как понять, какой "злодей" использует tempDB
SQL Server Memory Grant или кто скушал память?
Переглядів 1,5 тис.6 років тому
SQL Server Memory Grant или кто скушал память?
SQL Server. Perfmon и Management Data Warehouse. Создаем "черные ящики"
Переглядів 6906 років тому
SQL Server. Perfmon и Management Data Warehouse. Создаем "черные ящики"
SQL Server 2017 Memory settings. Настройка памяти.
Переглядів 3,4 тис.6 років тому
SQL Server 2017 Memory settings. Настройка памяти.
SQL Server AlwaysON. Redo thread it totally blocked.
Переглядів 1,7 тис.6 років тому
SQL Server AlwaysON. Redo thread it totally blocked.
SQL Server 2016 Move tempdb to another drive. Переносим и настраиваем TempDB
Переглядів 3,5 тис.6 років тому
SQL Server 2016 Move tempdb to another drive. Переносим и настраиваем TempDB
SQL Server 2017 Installation. Установка и начальная настройка
Переглядів 16 тис.6 років тому
SQL Server 2017 Installation. Установка и начальная настройка

КОМЕНТАРІ

  • @keepermodekeepermode1803
    @keepermodekeepermode1803 День тому

    Спасибо! Где взять скрипт AOn (12-я минута ролика)?

  • @1boxingclub378
    @1boxingclub378 2 місяці тому

    Интересуют еще параметры роста- вы про них ничего указали

    • @datainternalsru6025
      @datainternalsru6025 2 місяці тому

      @@1boxingclub378 про рост, да, наверное стоило. Вообще, autogrowth сам по себе процесс не очень удачный и может оказать негативное влияние. Тут не так давно нарвались на интересное ожидание, связанное с ростом лога и я могу сказать, что не зря процесс autogrowth считается нежелательных для высокопроизводительных БД.

    • @1boxingclub378
      @1boxingclub378 2 місяці тому

      @@datainternalsru6025 А вы можете дать рекомендации относительно параметров роста? Например у меня сервер с 1 физическим процессором 3 логических. У нас сейчас спор идет с коллегами относительно настройки файлов tempdb. Я топлю что надо оставить 8 файликов которые были до меня но изменить параметры роста. А коллеги говорят что надо ставить к-во файлов равное количеству процессоров. Что вы можете сказать по своему опыту? Система сама по себе имеет среднюю нагрузку

  • @user-jn5tp4nt7f
    @user-jn5tp4nt7f 5 місяців тому

    Фрагментация сказывается только когда нужно прочитать большие последовательные блоки данных. А если к таблице только обращения, что бы прочитать одну строку данных то плевать на фрагментацию

  • @yurvasya
    @yurvasya 5 місяців тому

    Спасибо, очень познавательно

  • @toolsworldsentry9535
    @toolsworldsentry9535 5 місяців тому

    Не надо извиняться за долгое видео, видео очень полезное! Жаль, что перестали выпускать ещё обучающие видео, вас слушать одно удовольствие.

    • @datainternalsru6025
      @datainternalsru6025 5 місяців тому

      Спасибо за отзыв. Много мыслей и разных наработок за это время, и очень мало времени, к сожалению. Канал был всегда для души, поэтому надо "поймать волну" :)

    • @toolsworldsentry9535
      @toolsworldsentry9535 5 місяців тому

      @@datainternalsru6025 накидал ещё в копилку) что интересного от вас хотелось бы послушать: партициорование, колоночные индексы, анализ и диагностика always on, всякие фишки и плюшки по ней как раз, очень интересного было бы послушать про новинки в 2019 и 2022 сервере, про диагностику интересного было бы посмотреть. Правда канал для души, смотрится очень интересно не скучно.

  • @unknown7stranger
    @unknown7stranger 6 місяців тому

    много воды: не нужные действия, не нужные прверки. Вычленить из этого потока сознаяния, что-нить нужное-не реально. Автор сам не знает как это делается. ]Потратил время в пустую.

  • @ДмитрийПарчинов
    @ДмитрийПарчинов 7 місяців тому

    Спасибо большое за видео. Вопрос только зачем AlwaysOn сюда впихнули? Разве нельзя было просто на Win2016 развернуть кластеризованный экземпляр SQL 2017 и с мигрировать на него с 2012. Крюк на AlwaysON не понятен

    • @datainternalsru6025
      @datainternalsru6025 7 місяців тому

      Добрый день! Спасибо за просмотр. Насколько я помню этот кейс, задача была от заказчика переехать на повышенную версию sql server, с минимальным временем простоя. Ну, а в процессе разбирательства делал стенд, а потом решил сделать и вижео инструкцию, мало ли кому-то пригодится. Что касается миграции, то там немного вариантов, если надо переехать за пару минут. Один из путей - это сделать через зеркало, или alwayson, которое по своей сути зеркало тоже :)

  • @You2Ber42
    @You2Ber42 8 місяців тому

    Что то не сходится эксперимент. 15:00 Первый запуск (чтение с диска) Low/Hi/Delta 341/445/104 350/400/50 Данные из пула Low/Hi/Delta 273/358/83 По сути во втором случае вообще чтений с диска не было, и поэтому 2й и третий эксперимент не применимы, однако разница все равно сравнимая. т.е. мы вообще не обращаемся к дискам и при этом разница такая же. Если бы все это было на HDD то разница там была бы в разы больше, в этом и суть. Если на HDD фрагментация жизненно необходима так как полностью можно было положить диски то на современных NVME SSD существенно нагрузку фрагментация не добавляет. Первый тест с заполнением страниц на 100% вообще смысла не имеет, так как любая вставка в эту таблицу приведет к взрывному росту фрагментации. Второй тест с 68% заполнением ближе к реальности. Т.е. тот факт что страниц при фрагментации больше и они занимают больше место в пуле тоже можно не учитывать, так как при указании фил фактора точно так же будет много страниц и они точно так же будут занимать место в пуле. Так же у SATA SSD в целом есть целый комплекс проблем с задержками из за необходимости эмулировать SATA протокол я бы не стал их рассматривать их серьезно. Хотя опять же судя по эксперименту без очистки кэша диски там вообще не причем, так как разница в 100мс сохраняется даже при чтении из буфера. Конечно совсем убирать дефрагментацию все равно не стоит, но критичность этой операции сильно понижается, и можно делать её значительно реже без особых последствий. Мы на продуктовой базе в 1.5 Tb (intel optane) отключали дефрагментацию, в течении недели база работала без обслуживания, по мониторингу каких то значительных отклонений не было, потом оставили раз в 2 недели. Конечно понимаю что видео 18 года, но по сути вопрос актуальный все еще. За видео спасибо, подчерпнул удобные инструменты для себя

  • @viktornosurname868
    @viktornosurname868 9 місяців тому

    Спасибо, что без воды. Весь ютуб завален видео на 1,5 часа которые часто не содержат почти ничего..

  • @antonanashkin84
    @antonanashkin84 Рік тому

    Александр, доброго времени суток! А как найти процесс\процессы, которые раздувают не файлы данных в TempDB, а файл логов TempDB? Просто периодически сталкиваемся с переполнением именно файла логов...

    • @datainternalsru6025
      @datainternalsru6025 9 місяців тому

      Антон, приветствую! Сорри, забегался, упустил комментарий. Я не знаю какого-то магического скрипта, который бы преподнес эту информацию "на блюдичке", поэтому смотрю через DBCC OPENTRAN :(( learn.microsoft.com/ru-ru/sql/t-sql/database-console-commands/dbcc-opentran-transact-sql?view=sql-server-ver16

    • @datainternalsru6025
      @datainternalsru6025 8 місяців тому

      Антон, приветствую! а вот такой нашелся скрипт... попробуйте, нашел в закромах только что:) SELECT tst.[session_id] , s.[login_name] AS [Login Name] , DB_NAME (tdt.database_id) AS [Database] , tdt.[database_transaction_begin_time] AS [Begin Time] , tdt.[database_transaction_log_record_count] AS [Log Records] , tdt.[database_transaction_log_bytes_used] AS [Log Bytes Used] , tdt.[database_transaction_log_bytes_reserved] AS [Log Bytes Rsvd] , SUBSTRING(st.text, (r.statement_start_offset/2)+1, ((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE r.statement_end_offset END - r.statement_start_offset)/2) + 1) AS statement_text , st.[text] AS [Last T-SQL Text] , qp.[query_plan] AS [Last Plan] FROM sys.dm_tran_database_transactions tdt JOIN sys.dm_tran_session_transactions tst ON tst.[transaction_id] = tdt.[transaction_id] JOIN sys.[dm_exec_sessions] s ON s.[session_id] = tst.[session_id] JOIN sys.dm_exec_connections c ON c.[session_id] = tst.[session_id] LEFT OUTER JOIN sys.dm_exec_requests r ON r.[session_id] = tst.[session_id] CROSS APPLY sys.dm_exec_sql_text (c.[most_recent_sql_handle]) AS st OUTER APPLY sys.dm_exec_query_plan (r.[plan_handle]) AS qp WHERE DB_NAME (tdt.database_id) = 'tempdb' ORDER BY [Log Bytes Used] DESC GO

  • @wddingo
    @wddingo Рік тому

    а без shrink`а инсёрты попадут сразу в БД при том, что бэкап продолжается?

    • @datainternalsru6025
      @datainternalsru6025 Рік тому

      Добрый день! Да, операции модификации данных не должны испытывать проблем с REDO из-за бэкапа. Суть проблемы в том, что данные попадают в лог файл на вторичном узле, но REDO поток, "накатывающий" эти данные на database file заблокирован. В результате данные как бы есть (в транзакциооном лог файле) и одновременно ещё как бы и нет (в файле баз данных) :) На самом деле, заблокировать REDO можно не только бэкапом+шринк, есть ещё различные ситуации, когда REDO блокируется. Занятно, что вы спросили, я как раз сейчас разбираюсь в одной интересной ситуации, когда AG группа перекатилась, позеленела, а вот БД внутри неё не смогли почему-то разобраться кто из них primary, а кто secondary... :)))

    • @wddingo
      @wddingo Рік тому

      @@datainternalsru6025 Доброго дня! Про то, что данные в логе, а редо-поток заблокирован я понял. Но я считал, что раз делается бэкап, то данные меняться не должны, а потому простой инсерт тоже не должен был дойти до БД, а остаться в логе до завершения бэкапа. Иначе может получиться, что данные у нас актуальные, а бэкап нет. Но тогда и селекты должны блокироваться, либо отрабатывать и после модифицироваться данными из лога, раз идет процесс бэкапа. Успехов вашим БД разобраться, кто из них главный =)

  • @DIEsel27031992
    @DIEsel27031992 Рік тому

    Очень наглядно и познавательно. Спасибо большое!

  • @Ренат-ц8ж
    @Ренат-ц8ж Рік тому

    Спасибо, очень познавательно.

    • @datainternalsru6025
      @datainternalsru6025 Рік тому

      пожалуйста! Тема памяти, кажется, бесконечна и не переставает быть актуальной. Уже sql2022 вышел, а настройки памяти все еще переодически являются проблемами для серверов, хотя казалось бы, их же там 3-4 штуки, где же можно запутаться? Ан-нет, легко:)

  • @Ренат-ц8ж
    @Ренат-ц8ж Рік тому

    Спасибо!

  • @ЕвгенийЮрченко-ш6ь

    похожи на Мясникова 😆

    • @datainternalsru6025
      @datainternalsru6025 Рік тому

      *голосом кота матроскина а я и на гита-а-аре тоже немного умею :)

  • @ЕвгенийЛунев-е1н
    @ЕвгенийЛунев-е1н 2 роки тому

    Александр, приветствую! А разве сортировка не должна по возможности сначала выполняться в оперативной памяти и только вследствие нехватки таковой перетекать в TempDB?

    • @datainternalsru6025
      @datainternalsru6025 2 роки тому

      Евгений, приветсвую! Простите за долгий ответ, начал отвечать и отвлекли и.... :( Смотрите, там очень интересная история, я тоже не могу понять, почему он лезет в tempDB, начал смореть объем выделяемой Grant memory и моему удивлению не было предела... что-то в районе пары десятков мегабайт(!), больше не выделено было, сколько я не пытался его как-то ... заставить более менее адекватно выдавать память, у меня ничего не вышло. Т.е. получается изначально выделяется мало памяти, ее автоматом не хватает и он почти сразу начинает сливаться в БД tempDB. Мне остается только догадываться, почему он так себя ведет...

  • @rotvx
    @rotvx 2 роки тому

    Хорошие видео. Если можно - очень нужен понятный урок по репликациям.

    • @datainternalsru6025
      @datainternalsru6025 2 роки тому

      Валерий, спасибо! К сожалению, репликация не самый мой сильный "конек", мало я с ней работал, извините.

  • @Ренат-ц8ж
    @Ренат-ц8ж 2 роки тому

    Здравствуйте, извиняюсь если немнго не по теме, сталкивались ли вы с тем что события query_post_execution_showplan и query_post_execution_plan_profile не генерируют план для некоторых запросов?

    • @datainternalsru6025
      @datainternalsru6025 2 роки тому

      Добрый день! Мне кажется, что я такое видел, но мне везло и нужные мне планы всегда ловились без проблем особых. Вот интересная статья, где собран список причин, по которым могут быть проблемы при решении проблем с планами запросов. www.dnsstuff.com/sql-server-query-plan-was-not-collected А какой тип кода вы трассируете и не видите плана? Хранимка, динамический sql,... ?

    • @datainternalsru6025
      @datainternalsru6025 2 роки тому

      А само событие он при этом генерирует? И в нем xml отсутствует или же он и события xevent-ов не выдаёт?

    • @Ренат-ц8ж
      @Ренат-ц8ж 2 роки тому

      ​@@datainternalsru6025изначально проблема обнаружилась c parameterized query внутри хранимки. Но также повторяется и с ad hoc запросом полученным из него. Упрощал проблемный запрос, но не смог выявить прямой зависимости ни от числа джойнов, ни от набора результирующих полей, получателя данных, хэша текста запроса итд. При некоторых условиях даже изменение текста комментария могло повлиять на генерацию события. События query_post_execution_showplan и query_post_execution_plan_profile не генерируются, но например генерируется query_thread_profile. Из особенностей в запросе большое число результирующих полей (>100) и число джойнов (>20) но сам запрос простой, нет сложной логики.

    • @Ренат-ц8ж
      @Ренат-ц8ж 2 роки тому

      @@datainternalsru6025 Спасибо большое за ссылку, похоже все таки по причине "optimize for ad hoc workloads"

    • @datainternalsru6025
      @datainternalsru6025 2 роки тому

      @@Ренат-ц8ж, отключили и генерируется сейчас? Вообще, странно, я всегда думал, что post_execution_showplan является фактом выполнения запроса и отображение реального плана. Любая параметризация simple/forced - это оптимизация компиляционных издержек и памяти, opt. for adhoc параметр не кеширует первое исполнение adhoc запроса, но как это может влиять на появление actual plan, не понимаю, если честно. Просто если взять adhoc и выполнить и включить отображение актуального плана - вы его получите, как он там кешироваться будет или нет, это вас уже не волнует, план вы получите. Думаю, как и событие xevent тоже, должны получить, процесс кеширования по-идее тут не должен влиять. Вообще, интересно. А какая версия у вас sql server?

  • @ЕвгенийЛунев-е1н
    @ЕвгенийЛунев-е1н 2 роки тому

    Очень полезное видео! Спасибо, Александр!

    • @datainternalsru6025
      @datainternalsru6025 Рік тому

      Пожалуйста! Я рад, что материал был вам полезен!

  • @Digr1979
    @Digr1979 2 роки тому

    Отличная презентация. Можно несколько раз смотреть с пользой для себя и просто для души.

  • @vladimirterentev3085
    @vladimirterentev3085 2 роки тому

    Спасибо, полезное видео, а продолжения нет?

  • @Денис-в7з1е
    @Денис-в7з1е 2 роки тому

    Очень жалко что такие видео не набирают огромной аудитории, потому что это контент ох***нный)

  • @marshev6277
    @marshev6277 3 роки тому

    Спасибо за интенсив. Жаль только что ссылки не открываются ...

  • @viktorbekker1232
    @viktorbekker1232 3 роки тому

    Александр, приветствую! Подскажите пож-та, где посмотреть имплементацию или детальное описание алгоритма реорганизации. Основной вопрос: насколько хорошо реорганизация устраняет внешнюю фрагментацию?

  • @gladchenko63
    @gladchenko63 3 роки тому

    Простите, что поднимаю тему через три года с публикации:) Бесспорно, фрагментация влияла, влияет и будет влиять на производительность. Мой комментарий не в этой плоскости. Натан так подобрал условия теста, чтобы утрировать проблематику. В реальности цифры и поведение движка могут существенно отличаться. Если у вас будет другая средняя длина строки, другой процент фрагментации (дефрагментированный индекс не будет таким вечно), СХД будет активнее кешировать, буферный пул не будет только для теста использоваться, блокировки будут, процессоры тоже будут не только дефрагментированные индексы на конвейерах обслуживать, MAXDOP будет иной, и ещё много чего можно придумать... Тогда результаты теста будут как первый запуск на 14-й минуте :) Не ведитесь на сенсации с сайта SQLSkils, они умеют красиво, даже броско подать материал. Из всей этой статьи блога Натана надо запомнить одно, что дефрагментация полезна. Но с появлением SSD мир стал другим. Скорость доступа к физическому носителю и обслуживания запросов ввода-вывода выросли многократно. Зачастую разницей от дефрагментации можно пренебречь. Отказ от дефрагментации не станет катастрофой. Его можно и не заметить. А иногда дефрагментация становиться явным злом, например, когда у вас с ней не справляется REDO, или когда она тупо убивает диски. Нельзя бездумно от неё отказываться, но и дефрагментировать бездумно тоже не стоит. К видео же особых претензий нет, кроме того, что как-то незаметно сравнивать стали фрагментированную таблицу и таблицу с филфактором не по умолчанию. Также стоило бы указать источники, которые призывают совсем отказаться от дефрагментации - я бы тоже "кинул в них камень". Спасибо автору видео.

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Александр, приветствую! Спасибо за ваш комментарий! Полностью согласен с вами, что в различных условия системы могут себя вести абсолютно не как оно "должно быть в теории". Любая система от 1Тб и более требует индивидуального подхода к обслуживанию и запуск обслуживания "в лоб" приведет к тому, что обслуживание просто выключат из-за проблем с ним :) Про ребилд на AlwaysOn - это вообще можно долго истории рассказывать, не зря ребилд иногда замедляют MAXDOP-ом 1, чтобы не создавал очередей на первичке или проблем для REDO на вторичке.

  • @rkDBA
    @rkDBA 3 роки тому

    Полезный материал. Хотелось бы узнать о расшифровке Wait Resourse о котором упоминается на отметке 50:09.

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Константин, приветсвую! Да, это можно , например, 'KEY: 5:72057598157127680 (92d211c2a131)' KEY - это указательно на факт, что мы лочим ключ индекса 5 - это номер базы данных 72057598157127680 - это partition_id (см select * from sys.partitions where partition_id = ...) 92d211c2a131 - указатель на значение, которые блокируется. Есть вот такой скрипт, к сожалению, я не знаю кто его автор, поэтому формирую как есть (если подскажете автора, обязательно укажу авторство) declare @keyValue varchar(256); SET @keyValue = 'KEY: 5:72057598157127680 (92d211c2a131)' --Output from deadlock graph: process-list/process[waitresource] -- CHANGE HERE ! ------------------------------------------------------------------------ --Should not have to change anything below this line: declare @lockres nvarchar(255), @hobbitID bigint, @dbid int, @databaseName sysname; --............................................. --PARSE @keyValue parts: SELECT @dbid = LTRIM(SUBSTRING(@keyValue, CHARINDEX(':', @keyValue) + 1, CHARINDEX(':', @keyValue, CHARINDEX(':', @keyValue) + 1) - (CHARINDEX(':', @keyValue) + 1) )); SELECT @hobbitID = convert(bigint, RTRIM(SUBSTRING(@keyValue, CHARINDEX(':', @keyValue, CHARINDEX(':', @keyValue) + 1) + 1, CHARINDEX('(', @keyValue) - CHARINDEX(':', @keyValue, CHARINDEX(':', @keyValue) + 1) - 1))); SELECT @lockRes = RTRIM(SUBSTRING(@keyValue, CHARINDEX('(', @keyValue) + 0, CHARINDEX(')', @keyValue) - CHARINDEX('(', @keyValue) + 1)); --............................................. --Validate DB name prior to running dynamic SQL SELECT @databaseName = db_name(@dbid); IF not exists(select * from sys.databases d where d.name = @databaseName) BEGIN RAISERROR(N'Database %s was not found.', 16, 1, @databaseName); RETURN; END declare @objectName sysname, @indexName sysname, @schemaName sysname; declare @ObjectLookupSQL as nvarchar(max) = ' SELECT @objectName = o.name, @indexName = i.name, @schemaName = OBJECT_SCHEMA_NAME(p.object_id, @dbid) FROM ' + quotename(@databaseName) + '.sys.partitions p JOIN ' + quotename(@databaseName) + '.sys.indexes i ON p.index_id = i.index_id AND p.[object_id] = i.[object_id] JOIN ' + quotename(@databaseName)+ '.sys.objects o on o.object_id = i.object_id WHERE hobt_id = @hobbitID' ; --print @ObjectLookupSQL --Get object and index names exec sp_executesql @ObjectLookupSQL ,N'@dbid int, @hobbitID bigint, @objectName sysname OUTPUT, @indexName sysname OUTPUT, @schemaName sysname OUTPUT' ,@dbid = @dbid ,@hobbitID = @hobbitID ,@objectName = @objectName output ,@indexName = @indexName output ,@schemaName = @schemaName output ; DECLARE @fullObjectName nvarchar(512) = quotename(@databaseName) + '.' + quotename(@schemaName) + '.' + quotename(@objectName); SELECT fullObjectName = @fullObjectName, lockIndex = @indexName, lockRes_key = @lockres, hobt_id = @hobbitID, waitresource_keyValue = @keyValue; --Validate object name prior to running dynamic SQL IF OBJECT_iD( @fullObjectName) IS NULL BEGIN RAISERROR(N'The object "%s" was not found.',16,1,@fullObjectName); RETURN; END --Get the row that was blocked --NOTE: we use the NOLOCK hint to avoid locking the table when searching by %%lockres%%, which might generate table scans. DECLARE @finalResult nvarchar(max) = N'SELECT lockResKey = %%lockres%% ,* FROM ' + @fullObjectName + ISNULL(' WITH(NOLOCK INDEX(' + QUOTENAME(@indexName) + ')) ', '') + ' WHERE %%lockres%% = @lockres' ; --print @finalresult EXEC sp_executesql @finalResult, N'@lockres nvarchar(255)', @lockres = @lockres;

  • @MrEdo999
    @MrEdo999 3 роки тому

    А как узнать какая сессия съела место в логе tempdb?

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      @MrEdo999, добрый день! Попробуйте вот такой скрипт SELECT tst.[session_id] , s.[login_name] AS [Login Name] , DB_NAME (tdt.database_id) AS [Database] , tdt.[database_transaction_begin_time] AS [Begin Time] , tdt.[database_transaction_log_record_count] AS [Log Records] , tdt.[database_transaction_log_bytes_used] AS [Log Bytes Used] , tdt.[database_transaction_log_bytes_reserved] AS [Log Bytes Rsvd] , SUBSTRING(st.text, (r.statement_start_offset/2)+1, ((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE r.statement_end_offset END - r.statement_start_offset)/2) + 1) AS statement_text , st.[text] AS [Last T-SQL Text] , qp.[query_plan] AS [Last Plan] FROM sys.dm_tran_database_transactions tdt JOIN sys.dm_tran_session_transactions tst ON tst.[transaction_id] = tdt.[transaction_id] JOIN sys.[dm_exec_sessions] s ON s.[session_id] = tst.[session_id] JOIN sys.dm_exec_connections c ON c.[session_id] = tst.[session_id] LEFT OUTER JOIN sys.dm_exec_requests r ON r.[session_id] = tst.[session_id] CROSS APPLY sys.dm_exec_sql_text (c.[most_recent_sql_handle]) AS st OUTER APPLY sys.dm_exec_query_plan (r.[plan_handle]) AS qp WHERE DB_NAME (tdt.database_id) = 'tempdb' ORDER BY [Log Bytes Used] DESC GO

  • @viktorbekker1232
    @viktorbekker1232 3 роки тому

    Александр, приветствую! Спасибо большое, за очередной интересный доклад. А что делать в большой, промышленной среде , хотя бы на 30+ инстансов(на разных хостах)? Дело в том, что эта утилита требует ручной настройки и судя по всему за ней нужно следить(с блокировками и профайлером шутки плохи). Есть ли какое-то решение/лучшие практики как построить автоматизированный мониторинг большого числа инстансов(с алертами)? Сам использую zabbix+TSQL, в принципе все работает. Но было бы очень интересное послушать Ваше мнение)

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Виктор, приветствую! Хороший вопрос:) Ну... давайте начнем с того, что определимся хотим ли мы видеть платное или бесплатное решение:) Ну и предполагаю ответ, что хотелось бы конечно что-то, что не будет стоить, как "чугунный мост" . И вот тут наступает немая пауза, потому что все крутые мониторинги именно под SQL, подчеркну именно заточенные под SQL - они платные. Я говорю про те, которые могут и специализированно мониторить, т.е. понимают, чем latch от lock отличается и знают про клерк памяти, если нужно мониторить базовые показатели, жизнь сервиса, но не погружаться сильно глубоко, то мне тут нравится SCOM от Microsoft. Свою задачу он знает и решает, но "глубины" от него, к сожалению, ждать сильно не приходится, но алерты и т.д. там все это есть. Теперь про бесплатное и вот решение zabbix+tsql мне кажется, что самое крутое, если кто-то может предложить тут в комментах еще что-то велком! Я буду только ЗА! Есть еще вот такая штука sqlwatch.io/, она опенсорсная, построенная на tsql+powerbi, но алертить, кажется мне, не умеет. ну и лично у меня были некоторые проблемы с настройкой, но выглядит круто и знает про многие аспекты "жизни" SQL Server. Посмотрите, может быть понравится концепция :)

    • @viktorbekker1232
      @viktorbekker1232 3 роки тому

      Спасибо за развернутый ответ! :) По поводу платных решений: Наверное, проще выбрать / сделать свое условно бесплатное решение. Заплатить ДБА который его напишет, внедрит, будет интерпретировать отчеты и оперативно реагировать на алерты. Нет толку от платного решения без ДБА, который может его разобрать и вылечить все issues (ИМХО). Однако, может быть вы знаете какие-нибудь платные решения с “killer features”, что даже коллектив высококвалифицированных MS SQL инженеров быстро и качественно их не сделает в разумный срок(пара месяцев)? Над покупкой такого прорывного решения можно и задуматься.. Глянул sqlWatch - здорово! Как минимум 38 неплохих issues + готовый TSQL + примеры визуализации... еще и в свободном доступе, это очень круто. Тут сразу вспоминается RAP от Microsoft :)) Вопрос: Есть ли где-то список issues которые потенциально может поймать RAP. Их изучение и анализ очень бы пригодилось при построении системы мониторинга многим специалистам по SQL Server?

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      @@viktorbekker1232 что-то из платного мне сложно советовать, потому что я его не использую. Однако, я сталкивался с правильными картинками из этого софта, по которым можно понять насколько детальная внутри информация. Вот тут нашлась линка на какой-то сайт: www.comparitech.com/net-admin/sql-server-monitoring-tools/ где в ТОП7 "сидят" как раз эти софтины. У них у всех есть триалки, поэтому можно поковырять, посмотреть. Однако, надо понимать, что все они "под капотом" используют одни и те же механизмы - DMV, xEvent, perfmon. Вот 3 основых источника информации у всех, поэтому сделать какую-то "вау фичу" не просто, так чтобы она не появилась у конкурентов через релиз (условно говоря), потому что источники информации ясны, более того запросы все трассируются на "раз два". Поэтому я думаю, что у всех примерно равные возможности будут. И еще момент, надо очень внимательно смотреть за тем, что они будут творить с вашим сервером, нагрузка от этих туловин может быть. Еще посмотрите в сторону скриптов от Брен Озара - www.brentozar.com/first-aid/ Тут довольно много чего есть интересного. RAP от Microsoft... там очень много проверок, этот софт с историей. Одних только вариантов issue там более 600-700 сотен, насколько я помню. Списком все эти "проблемы" я сомневаюсь, что можно найти где-то в открытом доступе, это было бы нарушением прав скорее всего.

  • @antonanashkin84
    @antonanashkin84 3 роки тому

    Приветствую, Александр. Рад видеть в добром здравии в это нелегкое время. Вторая часть видео обязательно нужна для полноты повествования. Данное видео прекрасно зашло!

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Приветствую, Антон! И я рад Вас видеть! :))) Ну что ж... надо будет собрать мысли "в кучку"... и попробовать как-то рассказать, что внутри файлов смотреть и как анализировать. И желательно не на сто часов видео)))

  • @KittenYour
    @KittenYour 3 роки тому

    Благодарю!

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Рад, что материал вам был интересен!

    • @KittenYour
      @KittenYour 3 роки тому

      @@datainternalsru6025 Жаль видео мало. Сейчас контента в ру сегменте по mssql вообще мало толкового.

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      @@KittenYour, а какие темы по sql были бы интересны?

  • @ВалерьянКузьминако

    А что делать если упадёт сервер с ISCSI? вся кластеризация бессмысленна получается?

    • @Welk555
      @Welk555 Рік тому

      Он тоже кластеризируется :) есть разные способы

  • @yuch7219
    @yuch7219 3 роки тому

    Добрый день . каким образом с генерировали нагрузку ??? Скрипт ????

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Добрый день! И да и нет, это утилита, внутри неё сидят скрипты уже. Честно сказать, какой именно скрипт использовался, уже сложно вспомнить.

  • @ЕвгенийСаморуков-ч6х

    Спасибо. Хорошее видео

  • @omm1029
    @omm1029 3 роки тому

    Достаточно много инфы по теме, что искал..на русском. Спасибо , что не поленились и записали такой формат. Как начну немного разбираться, тоже попробую записать туториал для грядущего поколения админов)

  • @omm1029
    @omm1029 3 роки тому

    Я ослышался? Конфигурация на сервере, не на ноуте?) Интересно что за система охлаждения установлена , чтобы вывозить такие параметры в работе?

    • @datainternalsru6025
      @datainternalsru6025 3 роки тому

      Добрый день! Стенд собирался на рабочем ноуте, lenovo p50, на нем все обкатывалось, тестировалось и эти видео делал. У заказчика, где выполнялись реальные работы, там сервер конечно. И не один:)

  • @KittenYour
    @KittenYour 3 роки тому

    Скрипты было бы не плохо приложить.

  • @KittenYour
    @KittenYour 3 роки тому

    Спасибо. Полезный материал.

  • @Anti4pok
    @Anti4pok 4 роки тому

    у меня 48 ЦП и 48 файлов данных, при этом есть ожидания (10ms)PAGELATCH_SH:tempdb:28(PFS). Что будет если я сделаю 64 файла данных при 48 процессорах? не будет ли хуже

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      Антон, приветствую! Для начала проверьте, что у вас файлы одного размера (текущий размер имеет значение) и размер автоприроста у всех файлов стоит одинаковый. Еще хорошая практика флаги - T1117, T1118. до 2016 они актуальны, потом уже не очень ( blog.sqlauthority.com/2020/02/27/sql-server-tempdb-and-trace-flag-1117-and-1118-not-required/ www.mssqltips.com/sqlservertip/4364/sql-server-2016-trace-flags-1118-and-1117-for-page-allocations/) После этого можно наверно подумать про увеличение количества файлов, но 48 и так довольно много, у меня как-то сомнения, что доп. файлы помогут такой проблеме. Я не могу припомнить, чтобы кто-то из моих заказчиков имел такой конфиг, чтобы файлов было больше, чем физических ядер на сервере. Сложно предположить, какой может быть от этого эффект. А что у вас за нагрузка такая на tempdb? Много временных объектов или механизм версионности работает?

  • @Anti4pok
    @Anti4pok 4 роки тому

    Лайк подписка =) скрипт отличный на 7 минуте

    • @dominickmax7735
      @dominickmax7735 3 роки тому

      i dont mean to be so offtopic but does anybody know of a method to log back into an instagram account..? I stupidly lost the account password. I would appreciate any help you can offer me!

    • @coltenben3470
      @coltenben3470 3 роки тому

      @Dominick Max instablaster =)

    • @dominickmax7735
      @dominickmax7735 3 роки тому

      @Colten Ben thanks for your reply. I found the site on google and Im in the hacking process now. Takes a while so I will get back to you later when my account password hopefully is recovered.

    • @dominickmax7735
      @dominickmax7735 3 роки тому

      @Colten Ben it worked and I finally got access to my account again. I'm so happy:D Thanks so much you saved my ass !

    • @coltenben3470
      @coltenben3470 3 роки тому

      @Dominick Max You are welcome =)

  • @europeiz
    @europeiz 4 роки тому

    Жаль что быстро и без подробностей, я люблю видео формат а по ISCSI и кластером видео подробных на рутубе вообще нету

  • @ВераХорева-ъ4е
    @ВераХорева-ъ4е 4 роки тому

    Благодарю за видео! Очень полезный и качественный материал!

  • @ДенисРубашкин-п5т

    Добрый день! Корень проблемы ведь в маленьком гранте памяти? Не помню точно, для строк переменной длины он рассчитывается для половины значения размерности столбца? Поэтому, если увеличить размерность столбца, по идее должен увеличится запрашиваемый грант памяти и, соответственно, уменьшится сброс в tempdb. В принципе любые запросы с сортировкой/хешом по такому столбцу поимеют проблемы со сливом в tempdb. А если для UPDATE STATISTICS указать некий MAXDOP отличный от нуля это спровоцирует параллелизм или все равно должен порог стоимости быть превышен? Я это к тому, что параллельный запрос тоже запрашивает больший грант памяти.

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      Денис, приветсвую! Сорри, вовремя не увидел комментарий. Я не смог добиться изменения memory grant для такой статистики. Мне это тоже оч. не понравилось и я в бэкграунде игрался, но результата особо не было. Параллельный план должен больше брать, конечно, но ошибка уж очень большая была и, как мне кажется, не компенсируется.

  • @ЕвгенийСмирнов-ш9с

    Спасибо, интересно про перенос посчитанной статистики и некоторые моменты по xEvent (логирование события создания статистики).

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      Евгений, пожалуйста! Рад, что было интересно. Про перенос статистики сам случайно узнал, что так можно. На практике пока не удалось еще применить, но штука оч. интересная.

  • @ЕвгенийСмирнов-ш9с

    Спасибо. Узнал пару новых моментов относительно статистики. Было бы интересно посмотреть еще что-то на эту тему.

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      Рад, что понравилось. Есть еще одно видео на данную тему - ua-cam.com/video/TdhhT5TqqAw/v-deo.html Или Вам было бы интересно про обслуживание баз данных видео?

  • @konstantinvorobev5926
    @konstantinvorobev5926 4 роки тому

    Отличный материал, спасибо!

  • @antonanashkin84
    @antonanashkin84 4 роки тому

    Александр, добрый день. Отличное видео, полезная тема, с нетерпением жду вторую часть.

  • @ILUSHNIK
    @ILUSHNIK 4 роки тому

    Видео - огонь! Очень информативно и наглядно. Подпишусь пожалуй. Спасибо. А то что оно, якобы, длинное - не заметил. Смотрел на скорости 2х :)

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      спасибо! Я рад, что было полезно! я сам большинство видео смотрю на полуторной или двойной скорости. когда видео пишешь, думать и говорить с двойной скоростью не получается пока что:)))

  • @MaratLazarev
    @MaratLazarev 4 роки тому

    Забавно, меня Ростелеком на www.datainternals.ru не пускает =) Что натворили? xD

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      прикольно:) вроде ничего, сижу вот спокойно пью кофе, а тут такое...))) проверил у своего провайдера и с телефона билайн, вроде все ок. Там https не используется, может быть поэтому браузер/провайдер решили, что не безопасно на такие сайты ходить.

    • @MaratLazarev
      @MaratLazarev 4 роки тому

      @@datainternalsru6025 Похоже какой-то странный прикол у РТК. Оплатил за апрель - пустило xD

  • @datainternalsru6025
    @datainternalsru6025 4 роки тому

    Скрипт, которым в видео пользовался. Не поместился в описание:) К сожалению, автор этого замечательного скрипта не я, а первоисточник потерялся:( надеюсь, если что меня простят:))) --# THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT --#WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT --#LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS --#FOR A PARTICULAR PURPOSE. set nocount on create table #Data( FileID int NOT NULL, [FileGroupId] int NOT NULL, TotalExtents int NOT NULL, UsedExtents int NOT NULL, [FileName] sysname NOT NULL, [FilePath] nvarchar(MAX) NOT NULL, [FileGroup] varchar(MAX) NULL) create table #Results( db sysname NULL , FileType varchar(4) NOT NULL, [FileGroup] sysname not null, [FileName] sysname NOT NULL, TotalMB numeric(18,2) NOT NULL, UsedMB numeric(18,2) NOT NULL, PctUsed numeric(18,2) NULL, FilePath nvarchar(MAX) NULL, FileID int null) create table #Log( db sysname NOT NULL, LogSize numeric(18,5) NOT NULL, LogUsed numeric(18,5) NOT NULL, Status int NOT NULL, [FilePath] nvarchar(MAX) NULL) INSERT #Data (FileID, [FileGroupId], TotalExtents, UsedExtents, [FileName], [FilePath]) EXEC ('DBCC showfilestats WITH NO_INFOMSGS') update #Data set #Data.FileGroup = sysfilegroups.groupname from #Data, sysfilegroups where #Data.FileGroupId = sysfilegroups.groupid INSERT INTO #Results (db, [FileGroup], FileType, [FileName], TotalMB, UsedMB, PctUsed, FilePath, FileID) SELECT DB_NAME() db, [FileGroup], 'Data' FileType, [FileName], TotalExtents * 64./1024. TotalMB, UsedExtents *64./1024 UsedMB, UsedExtents*100. /TotalExtents UsedPct, [FilePath], FileID FROM #Data order BY --1,2 DB_NAME(), [FileGroup] insert #Log (db,LogSize,LogUsed,Status) exec('dbcc sqlperf(logspace) WITH NO_INFOMSGS ') insert #Results(db, [FileGroup], FileType, [FileName], TotalMB,UsedMB, PctUsed, FilePath, FileID) select DB_NAME() db, 'Log' [FileGroup], 'Log' FileType, s.[name] [FileName], s.Size/128. as LogSize , FILEPROPERTY(s.name,'spaceused')/8.00 /16.00 As LogUsedSpace, ((FILEPROPERTY(s.name,'spaceused')/8.00 /16.00)*100)/(s.Size/128.) UsedPct, s.FileName FilePath, s.FileID FileID from #Log l , master.dbo.sysaltfiles f , dbo.sysfiles s where f.dbid = DB_ID() and (s.status & 0x40) <> 0 and s.FileID = f.FileID and l.db = DB_NAME() SELECT r.db AS "Database", r.FileType AS "File type", CASE WHEN r.FileGroup = 'Log' Then 'N/A' ELSE r.FileGroup END "File group", r.FileName AS "Logical file name", r.TotalMB AS "Total size (MB)", r.UsedMB AS "Used (MB)", r.PctUsed AS "Used (%)", r.FilePath AS "File name", r.FileID AS "File ID", CASE WHEN s.maxsize = -1 THEN null ELSE CONVERT(decimal(18,2), s.maxsize /128.) END "Max. size (MB)", CONVERT(decimal(18,2), s.growth /128.) "Autogrowth increment (MB)" FROM #Results r INNER JOIN dbo.sysfiles s ON r.FileID = s.FileID ORDER BY 1,2,3,4,5 DROP TABLE #Data DROP TABLE #Results DROP TABLE #Log

  • @rkDBA
    @rkDBA 4 роки тому

    Александр, спасибо. Тема интересная.

    • @datainternalsru6025
      @datainternalsru6025 4 роки тому

      Всегда рад! Да, я как-то раньше не принимал во внимание этот "эффект", проблема всплыла на сервере с огранниченной по размеру tempDB. Начали разбираться и вот... решил поделиться

    • @kate_s823
      @kate_s823 4 роки тому

      ​Добрый день, спасибо что делитесь такой интересной информацией. Жду новое видео! А какие были изначально симптомы у проблемы? Ошибки, инф.сообщения? В своей практике не ограничиваю системные БД. Пару слов можете сказать где это приемлемо использовать? Ясно что все зависит в целом от ситуации.., но все же? И бывают порой моменты, что tempdb(файлы БД, не лог) не хочет шринковаться ни в какую, можно ли выяснить какие странички кем заняты, чтобы не прибегать к перезапуску сиквела?