Архив рубрики «MS SQL»
Очистка процедурного кеша MS SQL
Добрый день уважаемые читатели моего блога.
Вчера можно было насладиться прекрасным, по истине грандиозной церемонией открытия зимних олимпийских игр в Сочи. Действительно впечатляет, а главное вызывает гордость за Россию.
Ура…Ура…Ура…
Ну а сегодня, хотелось бы рассказать Вам о том, как в очередной раз удалось победить резкое падение производительности 1С. Было замечено, что после переноса нескольких промышленных баз 1С на один сервер MS SQL периодически, через какой то промежуток времени, происходит резкое понижение производительности 1С.
Оказывается, что для оптимальной работы 1С, по мимо регулярных операций производимых на сервере 1С, нужно так же производить очистку процедурного кеша. Рекомендуется выполнять следующие регламентные операции:
– Обновление статистик.
– Очистка процедурного КЭШа.
– Дефрагментация индексов.
– Реиндексация таблиц базы данных.
Для очистки процедурного КЭШа необходимо выполнить команду:
DBCC FREEPROCCACHE
На сегодня пока все.
Определение размера таблиц базы MS 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
USE base; SET nocount on Declare @table varchar(50) Declare spaceused cursor local for select name from sysobjects where xtype='U' order by name if EXISTS(select * from tempdb..sysobjects where id =object_id('tempdb.dbo.#tspaceused')) DROP TABLE #tspaceused Create Table #tspaceused( _Name nvarchar(50), _Rows int, reserved varchar(18), Data varchar(18), _index varchar(18), Unused varchar(18) ) open spaceused Fetch next from spaceused into @table while @@fetch_status=0 Begin insert #tspaceused execute sp_spaceused @table fetch next from spaceused into @table end Close spaceused Deallocate spaceused If (Select Convert(int,CONVERT(Char(1),SERVERPROPERTY('ProductVersion'))))>8 select top 100 _name, _rows, Convert(int,REPLACE(reserved,' KB','')) as reserved, Convert(int,REPLACE(Data,' KB','')) as Data1, Convert(int,REPLACE(_index,' KB','')) as _index, Convert(int,REPLACE(Unused,' KB','')) as Unused/*, OBJECT_ID(_name) as id */ from #tspaceused Else select top 100 _name, _rows, Convert(int,REPLACE(reserved,' KB','')) as reserved, Convert(int,REPLACE(Data,' KB','')) as Data1, Convert(int,REPLACE(_index,' KB','')) as _index, Convert(int,REPLACE(Unused,' KB','')) as Unused, /*OBJECT_ID(_name) as id,*/ OBJECTPROPERTY(OBJECT_ID(_name),'TableIsPinned')as Pinned from #tspaceused order by reserved desc DROP TABLE #tspaceused; |
MS SQL – Перенос файлов TEMPDB
Сегодня наша заметка будет посвящена тому как перенести файлы от системной
базы TEMPDB в другое место.
В MS SQL есть системная база данных TEMPDB. В них хранятся временные объекты.
База данных TEMPDB создается заново при каждом запуске SQL Server.
Что необходимо сделать, что бы перенести файлы относящиеся к базе данных
TEMPDB на другой диск.
1. Открываем в консоле выполнения запросов (Query Analyzer) пункт New Query
(Новый запрос).
2. Пишем скрипт для переноса файлов системной базы данных TEMPDB
use master
GO
alter database tempdb
modify file( name = tempdev, filename = N’X:\SQL_DATA\tempdb_data.mdf’)
GO
alter database tempdb
modify file(name = templog, filename = N’X:\SQL_LOG\tempdb_log.ldf’)
GO
В свою очередь,
X:\SQL_DATA\tempdb_data.mdf – новое место размещения данных для TEMPDB, а
X:\SQL_LOG\tempdb_log.ldf – новое место для размещения журнала транзакций для
TEMPDB меняем на нужные нам пути для храниея этих файлов.
3. Перезапускаем сервер MS SQL Server.
4. Удаляем руками старые файлы, они больше не нужны.
Вот и все, наша задача решена.