Appearance
Underhåll
För optimal drift av flexite är det rekommenderat att utföra löpande underhåll av miljön. I detta kapitel går vi igenom några rekommenderade åtgärder.
Defragmentera databas
Databasen i flexite nyttjar 'Full-Text Catalog' för att tillgodose utökade möjligheter samt ökad prestanda för fritextsökning i sökapplikationerna i flexite.
Databasen i flexite nyttjar databas-index för att tillgodose god prestanda vid läsning av information.
Allt eftersom information läggs till, uppdateras och tas bort i databasen uppdateras även 'Full-Text Catalog' samt dessa index, varpå fragmentering uppstår. En effekt av fragmenterade index är att prestandan vid läsning av information sjunker, vilket exempelvis påverkar sökapplikationerna i flexite.
Det är starkt rekommenderat att schemalägga dessa åtgärder utanför arbetstid för att minimera påverkan på funktionalitet och prestanda i flexite. Det är kritiskt att dessa åtgärder inte kolliderar med andra schemalagda åtgärder och uppgifter.
Full-Text Catalog
Flexite AB rekommenderar starkt att en gång per dygn återskapa ('REBUILD') Full-Text Catalog i flexites databas ('FlexiteFullTextCatalog'), oavsett fragmentationsgrad.
Det är möjligt att schemalägga denna operation via Microsoft SQL Server Agent Jobs.
Full-Text Index REBUILD
Att initiera ett återskapande av Full-Text Catalog i flexites databas (' flexite') kan utföras med följande SQL-skript:
sql
USE [flexite];
GO
ALTER FULLTEXT CATALOG FlexiteFullTextCatalog REBUILD;Obs!
Detta skript rapporteras som klart när operationen REBUILD har initierats, inte när den slutförts. Själva operationen utförs i bakgrunden efter initiering.
Övervaka REBUILD
Operationen REBUILD för Full-text Catalog utförs som standard i bakgrunden. Följande SQL-skript är ett exempel på hur denna operation kan övervakas där status skrivs till Message var 10:e sekund:
sql
USE [flexite];
GO
DECLARE @status AS INT = 1, @started AS BIT = 0, @msg AS VARCHAR (MAX);
WHILE @status <> 0
BEGIN
SELECT @status = FULLTEXTCATALOGPROPERTY('FlexiteFullTextCatalog', 'PopulateStatus');
IF @status = 0
AND @started = 0
BEGIN
SET @status = -1;
END
SET @msg = CONVERT (VARCHAR (25), getdate(), 120) + ' Full text catalog rebuild status: ' + (CASE @status
WHEN -1 THEN 'Not started'
WHEN 0 THEN 'Idle'
WHEN 1 THEN 'Full Population In Progress'
WHEN 2 THEN 'Paused'
WHEN 3 THEN 'Throttled'
WHEN 4 THEN 'Recovering'
WHEN 5 THEN 'Shutdown'
WHEN 6 THEN 'Incremental Population In Progress'
WHEN 7 THEN 'Building Index'
WHEN 8 THEN 'Disk Full. Paused'
WHEN 9 THEN 'Change Tracking'
END);
RAISERROR (@msg, 0, 1)
WITH NOWAIT;
IF @status != -1
BEGIN
SET @started = 1;
END
IF @status != 0
BEGIN
WAITFOR DELAY '00:00:10';
END
ENDAvläsa fragmentationsgrad
Det är möjligt att se information om fragmentationsgraden för Full-Text Catalog i flexites databas (' flexite') med följande SQL-skript:
sql
USE [flexite];
GO
DROP TABLE IF EXISTS #fulltextFragmentationDetails;
GO
SELECT fc.fulltext_catalog_id,
fc.name AS fulltext_catalog_name,
OBJECT_SCHEMA_NAME(fi.OBJECT_ID) + '.' + OBJECT_NAME(fi.object_id) AS object_name,
fif.num_fragments,
fif.fulltext_mb AS size_mb,
fif.largest_fragment_mb,
100 * (fif.fulltext_mb - fif.largest_fragment_mb) / NULLIF (fif.fulltext_mb, 0) AS fragmentation_percent
INTO #fulltextFragmentationDetails
FROM sys.fulltext_catalogs AS fc
INNER JOIN
sys.fulltext_indexes AS fi
ON fi.fulltext_catalog_id = fc.fulltext_catalog_id
INNER JOIN
(SELECT table_id,
COUNT(*) AS num_fragments,
CONVERT (DECIMAL (9, 2), SUM(data_size / (1024. * 1024.))) AS fulltext_mb,
CONVERT (DECIMAL (9, 2), MAX(data_size / (1024. * 1024.))) AS largest_fragment_mb
FROM sys.fulltext_index_fragments
GROUP BY table_id) AS fif
ON fif.table_id = fi.object_id;
SELECT *
FROM #fulltextFragmentationDetails
ORDER BY fragmentation_percent DESC;Databas-index
Flexite AB rekommenderar att minst en gång per vecka utföra följande åtgärder på samtliga index i flexites databas:
- Återskapa ('REBUILD') samtliga index i flexites databas som har en fragmentationsgrad på 30% eller mer. För att minimera påverkan på flexite är det rekommenderat att utföra denna operation med index ONLINE.
- Omorganisera ('REORGANIZE') samtliga index i flexites databas som har en fragmentationsgrad på 5% eller mer.
Det är möjligt att nyttja Wizard for Microsoft SQL Maintenance Plans för att schemalägga dessa operationer. För information om Maintenance Plans för att underhålla databas-index, se Microsofts dokumentation:
Avläsa fragmentationsgrad
Det är möjligt att se information om fragmentationsgraden för index i en databas (' flexite') med följande SQL-skript:
sql
SELECT *
FROM sys.dm_db_index_physical_stats(DB_ID('flexite'), NULL, NULL, NULL, 'DETAILED')
ORDER BY avg_fragmentation_in_percent DESC;SQL Maintenance Plan — REBUILD
För operationen 'REBUILD' rekommenderar Flexite AB följande konfiguration i SQL Maintenance Plan Wizard:
- Maintenance task = Rebuild Index
- Object = Tables and Views
- Free space options = Default free space per page
- Advanced options = Keep index online; Do not rebuild indexes
- Scan type = Detailed
- Fragmentation > 30%
- Page Count = INAKTIV
- Used in last = INAKTIV
Bra att veta
Online index rebuild kräver en Enterprise-utgåva av Microsoft SQL.
SQL Maintenance Plan — REORGANIZE
För operationen 'REORGANIZE' rekommenderar Flexite AB följande konfiguration i SQL Maintenance Plan Wizard:
- Maintenance task = Reorganize Index
- Object = Tables and Views
- Compact large objects = AKTIV
- Scan type = Detailed
- Fragmentation > 5%
- Page Count = INAKTIV
- Used in last = INAKTIV