Как стать автором
Обновить
7.33

Microsoft SQL Server *

Система управления реляционными базами данных

Сначала показывать
Порог рейтинга
Уровень сложности

Записки оптимизатора 1С (часть 9). Влияние сетевых интерфейсов на производительность высоконагруженных ИТ-систем

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.5K

Подумал, что необходим небольшой пост, посвященный сетевым адаптерам/интерфейсам, которые устанавливают в своих ИТ-ландшафтах пользователи. Речь пойдет не столько о конкретных моделях, сколько про то, что сеть такой же компонент информационной системы (как и те же диски, память, CPU), и на него нужно обращать не менее тщательное внимание. Многие его просто игнорируют и недооценивают – «Ну сеть и сеть, что там с ней может быть не так? Вот же 10 Гбит/с. Вот график пропускной способности. Всё прекрасно.».

Читать далее

Настройка бэкапов в S3 через Microsoft SQL Server без скриптов и стороннего ПО

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.1K

Привет, Хабр! Меня зовут Даниил, я дежурный системный инженер в Selectel. Но так было не всегда. Несколько лет назад я работал системным администратором в маленькой компании. И в какой-то момент мы решили внедрять 1С. А так как все вокруг у нас было на Windows, выбор пал на Microsoft SQL Server. Связка казалась самой очевидной и простой. В то время опыта у меня было маловато, многого я не знал, но прекрасно понимал, что резервное копирование — наше все. Так я без должного опыта занялся настройкой бэкапирования через MS SQL. Путь оказался не самым простым, поэтому я решил поделиться с новичками набитыми шишками и полученным опытом.
Читать дальше →

Переливаем таблицы БД между средами: быстро и без боли на примере MS SQL

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров6.9K

Необходимость переноса данных из одной среды в другую — задача, с которой разработчики сталкиваются достаточно часто. Например, для отправки таблиц из прода в среды для тестирования. Вместе с тем, такая «перезаливка» таблиц нередко превращается в настоящий квест, по ходу которого нужно не только гарантировать сохранность данных, но и исключить ошибки, связанные с человеческим фактором. Поэтому лучшей практикой является автоматизация переноса.

Меня зовут Евгений Грибков. Я ведущий программист в центре технологий VK. В этой статье мы рассмотрим одно из возможных решений создания скрипта перезаливки заданных таблиц из одной БД в другую на примере MS SQL.

Читать далее

Виды и типы индексов в MS SQL Server для начинающих

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров8.1K

Сегодня мы поговорим об индексации в MS SQL Server. Если вам хочется сделать работу с базой данных более быстрой и эффективной, то индексы — идеальное решение! Индексы помогают моментально находить нужные данные, минимизируют время обработки запросов и уменьшают нагрузку на сервер.

В этой статье я расскажу о том, какие бывают индексы в MS SQL Server.

Читать далее

Метод Contains коллекций в Entity Framework для SQL Server

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.8K

Долгое время в метод Contains(), который используется в Entity Framework для фильтрации данных по списку значений, не вносили изменения. До выхода Entity Framework 8 коллекция с этим методом внутри оператора запросов where LINQ транслировалась в значения в виде констант внутри оператора IN для SQL. Если количество элементов равно одному, то преобразование происходило в выражение с оператором ‘=’ на стороне MS SQL Server. Аналогично транслируется и метод расширения Where() LINQ.

Использование в EF8 функции OPENJSON устраняет часть проблем с кэшем планов запросов для SQL Server, но не применимо к старым версиям (compatibility level) баз данных. Да и оптимальность генерируемого ею кода в некоторых случаях вызывает сомнения.

В недавно вышедшем Entity Framework 9 добавили больше настроек для возможности транслирования метода Contains() коллекций как с помощью OPENJSON, так и «по-старому» — в виде констант.

Читать далее

Как мы настроили планировщик, чтобы разогнать виртуальные серверы

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров5K

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

Читать далее

MSSQL Переиндексация в несколько потоков

Время на прочтение8 мин
Количество просмотров3.2K

Переиндексация MSSQL в 1 поток идет медленно.

Идет всего 1 таблица за раз, а вы хотите что бы было сразу несколько?

Читать далее

Забудьте о SQL Server фрагментации

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.8K

Я уверен, что тебя беспокоит фрагментация твоего индекса.

Что такое фрагментация индекса и как она возникает 

Давай сделаем шаг назад и представим, что твоя база данных — это телефонный справочник, организованный по фамилии, имени.

По мере того как люди переезжают в твой город, нам приходится добавлять их в телефонную книгу. Идеально было бы, чтобы каждая страница имела немного свободного пространства, и мы управляем этим с помощью коэффициента заполнения. Когда SQL Server перестраивает индексы, он использует коэффициент заполнения, чтобы решить, сколько свободного места оставить на каждой странице. Если свободного места недостаточно, SQL Server вынужден производить некоторые манипуляции — но он не может просто вставить совершенно новую страницу прямо посередине телефонного справочника. Книга уже переплетена. Нам придется прикреплять дополнительные пустые страницы в конце.

Читать далее

Катастрофическое падение производительности из-за hyperthreading

Время на прочтение4 мин
Количество просмотров29K

Недавно я писал статью - что такое 50% cpu? На системах с hyperthreading 50% cpu по метрикам означает, что большая часть ресурсов сервера уже использована. То есть cpu>50% - это уже "желтая зона", и мы ожидаем замедление всего, чего можно. Но я никогда не думал до экспериментов, что падение может быть столь катастрофическим.

Для экспериментов я использую MSSQL. Если вы не связаны с базами, прочитайте первую часть по диагонали до выводов.

Читать далее

Оптимизация динамического SQL в SQL Server: ключ к высокой производительности

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.3K

Привет, Хабр и его читатели! 

Меня зовут Дарья Четыркина, я программист SQL в IT-компании «Автомакон». Если вы работаете с базами данных в Microsoft SQL Server и хотите, чтобы ваши запросы выполнялись быстро и без перебоев, эта статья для вас. Мы разберем динамический SQL — инструмент, который позволяет создавать гибкие запросы, но при неправильном использовании может замедлить работу системы и даже сделать ее уязвимой.

Предлагаю вместе изучить лучшие приемы оптимизации динамического SQL. Я расскажу, как использовать его с максимальной эффективностью, чтобы ваши запросы не только летали, но и были безопасны, а код легко поддерживался.

Читать далее

Как фрагментация индексов в SQL Server «подкладывает свинью» производительности, и что с этим делать

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5K

Привет, Хабр и его читатели! 

Меня зовут Дарья Четыркина, я программист SQL в IT-компании «Автомакон». Предлагаю обсудить проблему, которая может «съедать» производительность вашего SQL Server — фрагментация индексов, в конце статьи будут решения этой ситуации. Если вам важно, чтобы SQL Server всегда работал на полную мощность, эта статья — для вас.

Когда дело касается SQL Server, индексы — это ваши верные помощники: они организуют данные так, что сервер может находить нужные записи быстрее, чем обычный поиск. При этом со временем индексы начинают «разваливаться» и создают массу проблем. Фрагментация индексов — невидимый враг, который замедляет запросы, увеличивает нагрузку на сервер и лишает ваш SQL Server той оптимальной скорости, ради которой и создаются индексы. Разберемся, почему возникает фрагментация индекса, как она вредит производительности и что можно с этим сделать.

Читать далее

Насколько сложна ваша работа MS SQL server DBA?

Время на прочтение1 мин
Количество просмотров3.3K

Посчитаем по пунктам потенциальные грабли и проблемы, с которым встречается DBA на своем рабочем месте. Сколько получилось у вас? Отпишитесь в комментариях.

Читать далее

Контроль покрытия T-SQL

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.4K

Гоняем тесты кода на T-SQL в сборке каждого пулл-реквеста, собираем Coverage, проходим Quality Gate. Особенности построения CI-пайплайна для проектов БД MS SQL Server.

Читать далее

Ближайшие события

Как ускорить высокопараллельные вставки строк в SQL Server за считанные часы: опыт Mindbox

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.7K

Привет, Хабр!

Меня зовут Тимур Маннапов, и я самый обычный senior-разработчик в Mindbox.

На примере нашего продукта я расскажу, почему при загрузке CPU наполовину или меньше скорость параллельных вставок на SQL-сервере упирается в «невидимый» предел, а потом и вовсе замедляется. На нашем железе предел был в районе ~120 тысяч строк в минуту в одну таблицу. Поделюсь, как его преодолеть, не потратив годы на разработку и миллионы на новый сервер.

Читать далее

Что такое 50% cpu?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров48K

Если у вас на машине стрелочка показывает, что у вас осталась половина бака, то у вас точно осталась половина бака? На самом деле больше, так как современные машины врут и топлива еще немного есть, даже когда стрелка на нуле - забота об альтернативно одаренных водителях. А если сервер показывает 50% cpu, то сколько ресурсов у нас осталось?

Для многих ответ ясен, и это не 50%. Поэтому извините, если многие вещи будут вам очевидны. А вот для менеджеров, например, которые планируют ресурсы, это может быть открытием.

Читать далее

MSSQL natively compiled: когда они тормозят

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров897

В базах данных нет серебряной пули, универсального рецепта. Мне захотелось проверить экспериментально один граничный случай использования in memory tables и natively compiled - когда в тесте все было хорошо, а на реальных данных начались тормоза.

Читать далее

Transact SQL для анализа данных

Время на прочтение7 мин
Количество просмотров5.2K

Язык Transact SQL является процедурным расширением языка SQL и используется в СУБД Microsoft SQL Server. В этой статье мы рассмотрим использование некоторых элементов T-SQL для анализа данных. Сначала мы рассмотрим оконные функции, а затем поговорим о методах сводки (pivoting) данных и его отмены. При сводки данные преобразуются из состояния строк в столбцы, а при отмене обработки данные преобразуются из столбцов в строки, аналогично Excel.

Читать далее

Записки оптимизатора 1С (часть 8). Нагрузка на диски сервера БД при работе с 1С. Пора ли делать апгрейд?

Время на прочтение9 мин
Количество просмотров9K

Поговорим про падения производительности ИТ-систем, которые на первый взгляд связаны с дисковой подсистемой. Но это только «на первый взгляд».

Технические специалисты часто видят нагрузку на диски, очереди к ним и сразу появляется жгучее желание модернизировать дисковое хранилище.

Читать далее

SQL server: темная сторона AlwaysOn

Время на прочтение4 мин
Количество просмотров2.3K

В SQL server есть замечательная технология - AlwaysOn. Она используется для DR (disaster recovery, асинхронная репликация данных), HA (high availability, часто с automatic failover, что возможно при синхронной репликации), и для того, что мы обсудим в статье: readonly replica для DWH/OLAP/Reporting workload.

Ничто не совершенно (хотя я восхищаюсь простотой установки некоторых решений в MS SQL по сравнению с Postgre и Oracle. Хотя бы бэкапы... А AlwaysOn для маленьких баз заводится буквально в пару кликов).

Cегодня мы рассмотрим проблемы при использовании AlwaysOn для DWH/OLAP/Reporting.

Читать далее

1С РИБ опять тормозит. Как лечить?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.2K

Назрела тут тема про обмены между базами данных 1С. Даже сузим круг и поговорим об обменах между гомогенными базами данных (базами данных с идентичными конфигурациями).

Ситуации когда бизнес предпочитает распределенные информационные системы централизованным системам – далеко не редкость. И чем ИТ-система больше, чем больше в ней пользователей и транзакций в единицу времени, тем сложнее поддерживать обмен между ее узлами на плаву. Обмен частенько тормозит и становится помехой пользователям и даже бизнесу...

Читать далее