16.04.2024
Эффективная Навигация М2М
Меню сайта
Категории раздела
CyberFleet Скрипты для работы [10]
Приводятся разлинчые скрипты для работы с данной программой.
CyberFleet Работа с программой [24]
Методика работы, принципы, описание
Анализитор CF [13]
Скрипты анализа CyberFleet на наличие ошибок
Форма входа
Вход через Google
Вход через Вконтакте
Вход через Facebook
Партнеры
Реклама

Фрагментация индексов таблиц
Что анализирует скрипт:
Скрипт выводит информацию о фрагментации индексов таблиц. Чем больший данный процент - тем хуже.


Что выводит скрипт:
Таблицу с колонками:
1. Название таблицы
2. Название индекса
3. Процент фрагментации
4. Количество страниц памяти, занимаемых индексом (при малом количество страниц устранение фрагментации вряд ли даст результат)
5. Примерное количество строк в таблице (см описание колонки row_count).

Строки отсортированы по убыванию процента фрагментации.

Как использовать:
Выявить индексы с высоким процентом фрагментации и большим количество занимаемых страниц - данные индексы можно подвергунуть процедуре устранения фрагментации. 


Как исправлять:
Если вы не понимаете для чего это нужно, и хоть примерно как это делается - не делайте этого, а обратитесь в обслуживающую организацию для проведения подобных работ.

Разные способы:
1. Через Management Studio - интерфейс
1.1. Подключиться к SQL Сервер

1.2. Найти в Обозревателе объектов нужну таблицу и индекс ее.

1.3. Правой кнопкой на одном индексе или всей группе индексов:
 выбрать "Реорганизовать" - в этом случае программа проведет дефрагментацию индекса. Причем индекс останется в работе. Реорганизацию можно прервать в любой момент без потери уже проведенной работы. Работа Реорганизации сводится к сбору всех данных индекса в непрерывный кусок данных. Данная работа требует малых ресурсов, при этом индекс остается доступен системе, однако добиться полного устранения фрагментации может оказаться не возможно.
или 
 выбрать "Перестроить" - в этом случае произойдет создание нового индекса, с удалением существующего. На время работы данный индекс будет не доступен для системы, что может привести (и вероятнее всего приведет) к значительному падению производительности. При прерывании операции Перестроение все произведенная работа будет утеряна (поведение сервера при перестроении индекса зависит от версии самого SQL).

2. Через Язык запросов (через запрос в Management Studio). О выборе метода - читайте выше.
2.1 Реорганизация всех индексов таблицы

USE bn; 
GO
-- Reorganize all indexes on the HumanResources.Employee table.
ALTER INDEX ALL ON dbo.Sys_Dev_Archivedata
REORGANIZE
GO

где bn - имя базы данных CyberFleet
dbo.Sys_Dev_Archivedata - имя таблицы в базе данных (перестраиваются все индексы таблицы)

2.2. Перестроение индексов таблицы

USE AdventureWorks2012; 
GO
-- Reorganize all indexes on the HumanResources.Employee table.
ALTER INDEX ALL ON HumanResources.Employee
REBUILD
GO

где bn - имя базы данных CyberFleet
dbo.Sys_Dev_Archivedata - имя таблицы в базе данных (перестраиваются все индексы таблицы)

Компания Microsoft советует использовать "Перестроение" при Фрагментации более 30%. Устранение фрагментации менее чем в 5% обычно не продуктивно. Более подробно можно прочесть тут.


Обычно, небольшие таблицы (количество строк <100 000) быстро Перестраиваются и это не сильно сказывается на работе системы. Большие таблицы будут дольше обрабатываться.

Обычно, большие таблицы это:
  1. Sys_Dev_ArchiveData
  2. Sys_Dev_AnalogData
  3. FLEET_Events



Скрипт:
Скрипт для версии SQL 2005 или выше!

set nocount on 
use bn 
declare @dbid int select @dbid=db_id()
SELECT tb.name Table_name,ind.name Index_Name,round(avg_fragmentation_in_percent,2) 'Франметация%',page_count 'Кол-воСтраницИндекса', Tb2.row_count КолвоСтрокТаблицы
 FROM sys.dm_db_index_physical_stats ( @dbid, null, NULL, NULL , 'LIMITED') as stat
    inner join sys.indexes as ind on stat.index_id= ind.index_id and stat.object_id=ind.object_id
 inner join sys.tables as Tb on Tb.object_id=ind.object_id
 inner join sys.dm_db_partition_stats as Tb2 on Tb2.object_id=stat.object_id and tb2.index_id=stat.index_id
 order by avg_fragmentation_in_percent desc

Скрипт "заточен" на базу данных BN. Если у вас база данных называется по другому - потребуется изменить код скрипта в части 
 USE BN

Для версии 2000 нужно использовать скрипт ниже, но пока не готов его реализовать:

DECLARE @tablename VARCHAR (128), @execstr VARCHAR (255),@objectid INT, @objectowner VARCHAR(255), @indexid INT,@frag DECIMAL 
DECLARE @indexname CHAR(255),@dbname sysname, @tableid INT, @tableidchar VARCHAR(255) 
SELECT @dbname = 'bn'; 
DECLARE tables CURSOR FOR 
SELECT convert(varchar,so.id) FROM sysobjects so JOIN sysindexes si ON so.id = si.id WHERE so.type ='U' AND si.indid < 2 AND si.rows > 0; 
CREATE TABLE #fraglist (ObjectName CHAR (255), ObjectId INT, IndexName CHAR (255),IndexId INT, Lvl INT, CountPages INT, CountRows INT, MinRecSize INT, MaxRecSize INT, AvgRecSize INT, ForRecCount INT, Extents INT, ExtentSwitches INT, AvgFreeBytes INT, AvgPageDensity INT, ScanDensity DECIMAL, BestCount INT, ActualCount INT, LogicalFrag DECIMAL, ExtentFrag DECIMAL); 
OPEN tables 
FETCH NEXT FROM tables INTO @tableidchar 
WHILE @@FETCH_STATUS = 0 BEGIN 
    INSERT INTO #fraglist EXEC ('DBCC SHOWCONTIG (' + @tableidchar + ') WITH TABLERESULTS, ALL_INDEXES, NO_INFOMSGS') 
    FETCH NEXT FROM tables INTO @tableidchar 
END 
CLOSE tables DEALLOCATE tables 
SELECT ObjectNAme as TableName, IndexName, LogicaLFrag 'Фрагментация%',CountPages 'Кол-воСтраницИндекса',CountRows КолвоСтрокТаблицы FROM #fraglist 
order by LogicaLFrag desc
drop table #fraglist





Источник: CyberFleet
Похожие материалы
Категория: Анализитор CF | Добавил: logoff (03.07.2013) | Автор: Бондарь Михаил
Просмотров: 3589 | Комментарии: 2 | Теги: CyberFleet | Рейтинг: 5.0/2
Всего комментариев: 2
2 logoff  
0
Зависит от производительности системы по большому счету. Т.е. все относительно.
можно об организации хранения данных в SQL почитать тут
http://goo.gl/F8hFMk

1 Noel  
0
Спасибо! Я выполнил этот скрипт. А какое количество страниц памяти считается малым ? Вот у меня например, страниц - 1610, строк в таблице - 252584.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
TOP 10 Популярное
1 Оборудование> Гранит-Навигатор 4.14
2 Оборудование> Гранит-Навигатор 4.14: Настройка терминала
3 Оборудование> Абонентский терминал M2M Cyber GLX
4 Прочее> "Красные" против "Синих" - статистка космических запусков России (СССР) и США
5 Оборудование> M2M Cyber GLX: отправка команд
6 CyberFleet, CrossPoint> CyberFleet: Переустановка CyberFleet
7 CyberFleet, CrossPoint> КиберФлит: Учет топлива при помощи датчиков
8 Оборудование> M2M Cyber GLX: использование терминальных программ для снятия логов работы терминала
9 Прочее> SQL: CyberFleet: Занятие №3 Объединение таблиц Часть 1/2 (теория, inner join)
10 CyberFleet, CrossPoint> КиберФлит: Причины расхождения пробега по данным одометра и карте
Наш опрос
Тахографы следует?
Всего ответов: 21
LogOff © 2024
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС