Size: a a a

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

2020 June 25

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Вот я тоже вижу как работать с 1 строкой, типа: (ROWLOCK, holdlock)
Но я работаю с массовыми данными и поэтому я пишу сюда :)

Т.е. сомненя зашли ко мне в гости :)
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Marat
все верно, если хотите чтобы ваш процесс других не лочил, то ваш подход бить на  транзакции это норм. но с rowlock я бы глянул сколько строк, если много лучше убрать его
Тогда там где не класстеризованный индекс идёт блокировка страниц, боюсь большая блокировка...
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
А ещё важный наверное момент, есть коллеги и их очень много, кто в этом вообще не понимает, а порезать им права мне не дают, они могут писать запросы плохо и вызывают блокировки, поэтому думал в сторону rowlock, что бы минимизировать возможность этих блоков
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Алексей Савин
Не, наоборт, нужно блокировки делать если фактически есть что писать или считывать.
Мне нужно, что бы не было лишних блокировок, что бы данные другие процедуры (тоже массовые) могли использовать и не ожидать просто так :)

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

If exists
(
Select top 1 1  FROM [db1].[dbo].[table1] AS t1
   JOIN [db1].[dbo].[table2] AS t2 ON t1.[id] = t2.[id])
Begin
Truncate table  [db3].[dbo].[table3]
 Insert into  [db3].[dbo].[table3]
Select *  FROM [db1].[dbo].[table1] AS t1 WITH (ROWLOCK)
   JOIN [db1].[dbo].[table2] AS t2 WITH (ROWLOCK) ON t1.[id] = t2.[id]
End
Commit tran
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Сори с телефона не удобно
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Begin tran

If exists
(
Select top 1 1  FROM [db1].[dbo].[table1] AS t1
   JOIN [db1].[dbo].[table2] AS t2 ON t1.[id] = t2.[id])
Begin
Truncate table  [db3].[dbo].[table3]
 Insert into  [db3].[dbo].[table3]
Select *  FROM [db1].[dbo].[table1] AS t1 WITH (ROWLOCK)
   JOIN [db1].[dbo].[table2] AS t2 WITH (ROWLOCK) ON t1.[id] = t2.[id]
End
Commit tran
А exists в этом случае не накладывает лишнюю блокировку? Возможно я не совсем понимаю как отрабатывает exists в данном случае. Т.е. он же по идее вызывает две таблицы и если true потом вызывает снова две таблицы...
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Алексей Савин
А exists в этом случае не накладывает лишнюю блокировку? Возможно я не совсем понимаю как отрабатывает exists в данном случае. Т.е. он же по идее вызывает две таблицы и если true потом вызывает снова две таблицы...
Конечно наложит лочку, но очень быструю, т.к. отпустит ее при первом совпадении
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Спасибо всем.

Ещё вопрос...

У меня есть БД примерно 200 Гб, я хочу ускорить и поделить её на 4 файла m(n)df, все БД которые я создавал я создавал сразу сам и делил их на файловые группы. Эта БД у меня историческое наследие, ранее я не делил уже существующие БД, в инете пишут, что бы разделить надо сделать SHRINK EMPTYFILE сделать, но нашёл это не на очень офф сайтах...

Кто может уже делал, поделитесь опытом.
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
eу вас на разных дисках будут файловые группы?
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
eу вас на разных дисках будут файловые группы?
В текущем положении нет, только 1 дисковый массив нарезан
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Алексей Савин
В текущем положении нет, только 1 дисковый массив нарезан
у вас будут группы только для чтения?
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
у вас будут группы только для чтения?
Нет
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
вы планируете обслуживать отдельно каждую группу?
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
вы планируете обслуживать отдельно каждую группу?
Да
источник

M

Marat in SqlCom.ru - Стиль жизни SQL
Алексей Савин
В текущем положении нет, только 1 дисковый массив нарезан
ускорения не будет в таком случае
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
что именно планируется в обслуживание?
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
что именно планируется в обслуживание?
Перестроение индексов, обновление статистики

Когда мне задают вопросы я начинаю сомневаться, что понимаю этот вопрос :)
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Алексей Савин
Перестроение индексов, обновление статистики

Когда мне задают вопросы я начинаю сомневаться, что понимаю этот вопрос :)
ответ: вам не нужно ни чего делить
источник

АС

Алексей Савин... in SqlCom.ru - Стиль жизни SQL
Странно... прирост производительности однако есть, не большой, но всё же прирост.
Сравнивал чисто по скорости отработки запросов, некоторые БД мигрировали путём копирования данных... при том что 2 сервера с одинаковыми параметрами, различие только в том, что одна БД была записана в 1 файл, у меня в несколько...
Поэтому я и задумался над этим.
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Алексей Савин
Странно... прирост производительности однако есть, не большой, но всё же прирост.
Сравнивал чисто по скорости отработки запросов, некоторые БД мигрировали путём копирования данных... при том что 2 сервера с одинаковыми параметрами, различие только в том, что одна БД была записана в 1 файл, у меня в несколько...
Поэтому я и задумался над этим.
В вашем случае это можно отнести к погрешности. Эффект плацебо.
источник