PANTHEON™ Help

 Toc
 PANTHEON Help - Welcome
[Collapse]PANTHEON
 [Collapse]Guides for PANTHEON
  [Expand]Guide for PANTHEON
  [Expand]Guide for PANTHEON Retail
  [Expand]Guide for PANTHEON Vet
  [Expand]Guide for PANTHEON Farming
 [Collapse]User Manuals for PANTHEON
  [Collapse]User Manual for PANTHEON
   [Collapse]Getting Started
     Dictionary of terms
     First steps with PANTHEON
    [Expand]Using PANTHEON at Tecta, a fictional company
    [Expand]Instructions for Ensuring Compliance of PANTHEON with SAS
    [Expand]PANTHEON Installation
    [Collapse]PANTHEON System
     [Expand]PANTHEON System data
     [Collapse]MS SQL Server
       Download and install MS SQL Server
       Upgrading MS SQL Server to 2019 or 2022
       MS Management Studio - Download and install
       Restoring database onto SQL server
       Adding users to server level (AddUser_PAX)
       Installing SQL for external access
       Installing PANTHEON clients
       Nastavitve MS SQL strežnika za večja Pantheon™ oko
       Changing SQL Sort Order
      [Expand]MS SQL Server Security
      [Expand]Useful SQL Queries
       SQLExecute
      [Expand]SQL Server Jobs
     [Expand]Microsoft Windows Utilities
     [Expand]Security Policy
     [Expand]Database Administration
    [Expand]PANTHEON Basics
    [Expand]PANTHEON Help
    [Expand]Materials and Goods Movements
    [Expand]Assigning Identifiers
    [Expand]Frequently asked questions about Pantheon (F.A.Q.)
    [Expand]Archive
   [Expand]User Manual for eBusiness
   [Expand]Settings
   [Expand]Orders
   [Expand]Goods
   [Expand]Manufacturing
   [Expand]Service
   [Expand]Help
   [Expand]Personnel
   [Expand]Financials
   [Expand]Analytics
  [Expand]User Manual for PANTHEON Retail
  [Expand]User manual for PANTHEON Vet
  [Expand]User Manual for PANTHEON Farming
[Collapse]PANTHEON Web
 [Collapse]Guides for PANTHEON Web
  [Expand]Guide for PANTHEON Web Light
  [Expand]Guide for PANTHEON Web Terminal
  [Expand]Guide for PANTHEON Web Legal
  [Expand]Old products Archive
 [Collapse]User Manuals for PANTHEON Web
  [Expand]Getting started PANTHEON Web
  [Expand]User Manual for PANTHEON Web Light
  [Expand]User Manual for PANTHEON Web Terminal
  [Expand]User Manual for PANTHEON Web Legal
  [Expand]Old products Archive
[Collapse]PANTHEON Granules
 [Collapse]Guides for PANTHEON Granules
  [Expand]Personnel Granule
  [Expand]Travel Orders Granule
  [Expand]Documents and Tasks Granule
  [Expand]Dashboard Granule
  [Expand]B2B Orders Granule
  [Expand]Field Service Granule
  [Expand]Fixed Assets Inventory Granule
  [Expand]Warehouse Inventory Granule
 [Collapse]User Manuals for PANTHEON Granules
  [Expand]Getting started
  [Expand]Personnel Granule
  [Expand]Travel Orders Granule
  [Expand]Documents and Tasks Granule
  [Expand]B2B Orders Granule
  [Expand]Dashboard Granule
  [Expand]Field Service Granule
  [Expand]Fixed Assets Inventory Granule
  [Expand]Warehouse Inventory Granule
  [Expand]Archive
[Expand]User Site

Load Time: 375.0063 ms
"
  1000730 | 200766 | 342821 | Updated
Label

(ARHIV)
Nastavitve MS SQL strežnika za večja Pantheon™ oko

Nastavitve MS SQL strežnika za večja Pantheon™ okolja

  V kolikor se odločamo o večjih okoljih, priložena prosta različica MS SQL Express ne zadostuje, zato posežemo po Standard ali Enterprise različicah. V nadaljevanju sledi nekaj osnovnih napotkov, pri načrtovanju in pripravi sistema, kjer bo potekal Pantheon™ strežnik.  

Diskovna polja

Potrebujemo vsaj tri ločena raid1 polja, sestavljena iz vsaj šestih diskov:

prvo polje uporabimo za sistem, pagefile, namestitev SQL

drugo polje uporabimo za sistemske baze, med drugim tudi TEMPDB

tretje polje uporabimo za produkcijske baze

V kolikor imamo na voljo 8 diskov, uporabimo četrto polje za loge.

Zaželjeno je, da je sistemsko raid polje poravnano. Za diskovna polja, kjer se nahajajo SQL baze pa je to nujno. V primeru uporabe operacijskega sistema Windows Server 2008 je to narejeno samodejno, v primeru Windows Server 2003 pa to naredimo ročno z ukazom diskpart. Spodnji primer prikazuje postopek priprave aligned particije na enem izmed raid polj:

diskpart

list disk

select disk <x>

create partition primary align=1024

assign

exit

Particije, kjer se nahajajo SQL baze je potrebno formatirati s 64KB cluster size.

V kolikor SQL sistem že imamo vzpostavljen, lahko alignment particij preverimo z ukazom:

    wmic partition get BlockSize, StartingOffset, Name, Index

    Izpisan starting offset delimo z blocksize. V kolikor dobimo liho vrednost (npr. 63) particije niso pravilno pripravljene, kar pomeni 20% - 40% počasnejše delovanje SQL ob različnih IO obremenitvah.

Preverimo lahko tudi ustreznost cluster velikosti, in sicer z ukazom:

    fsutil fsinfo ntfsinfo c:

    V kolikor je med izposanimi vrednostmi »Bytes Per Cluster« različen od 65536, je particija ni pravilno formatirana, kar negativno vpliva na IO zmogljivosti SQL strežnika.   Procesorske zmogljivosti in pomnilnik Zahteve so lahko zelo različne, priporočen minimum pa so vsaj dual core Xeon sistemi ter 8GB pomnilnika ter 64 bitni sistem.

 

TempDB

Priporočeno je imeti en data file za vsak fizičen CPU core v sistemu. Kot primer lahko uporabimo zelo razširjen procesor Intel Xeon E5620, ki ima 4 fizične core oziroma 8 virtualnih (hyperthreading). V tem primeru je optimalno imeti 4 data file za tempdb. Vsi data filei morajo biti enako veliki

data filom za tempdb je pripročeno vnaprej alocirati diskovni prostor, da se izognemo fragmentaciji.

Primer priprave dodatnega datafila z 10GB prealocated prostora:

USE [master]

GO

ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdata2', FILENAME = N'e:\sql\templog2.mdf' , SIZE = 10240000KB , FILEGROWTH = 10%)

GO  

 

Analize hitrosti delovanja Pantheon™ podatkovne baze - sistem

Ob opažanju upočasnitev delovanja, je za prvi korak priporočena izvedba procesa nadgradnje Pantheon™ baze, saj se tako vzpostavi optimalno stanje podatkovne baze:

popravijo se indexi in ključi na tabelah

popravi se referenčna integriteta med tabelami

dodajo se nova polja, uredijo obstoječa ter odstranijo odvečna

Pri nadgradnji moramo biti pozorni, da vklopimo možnost »Nadgradnja vseh objektov«. S tem se preveri celotna Pantheon™ struktura ter odpravi napake, katere je morebiti povzročil zunanji dejavnik (dodatne implementacije).

Priporočeno je spremljanje performance counterjev, na nivoju Microsoftovega operacijskega sistema:

Memory Commited Bytes – v kolikor je alociranega pomnilnika več, kot ga ima sistem je potrebno razširiti pomnilnik, ker gre za t.i. swapping.

Memory Available Mbytes – v kolikor le ta pade pod mejo 5%, je potrebno razširiti pomnilnik

PhysicalDisk Idle Time – v kolikor le ta večkrat pade pod 15%, pomeni da so diskovna polja preobremenjena

PhysicalDisk Read Latency & Write Latency – v kolikor večkrat presegata 30ms, je potrebno pregledati strukturo diskovnih polj, sql zahtevke, skladnost particij z best practice ipd.  

 

Analize hitrosti delovanja Pantheon™ podatkovne baze – SQL

Preverimo, koliko časa podatki ostanejo v cachu. Vrednosti »page life expectancy« so kritične, priporočene pa so v rangu okoli 1000. Za pravilno sliko, se naj spodnji zahtevek izvaja vsakih 5 minut skozi dovolj dolgo obdobje, da bo vzorec reprezentativen. Ob vklopu več strežniških nadzornih sistemov (predvsem vgrajen lokalni MS data collection), lahko to negativno vpliva na celostno zmogljivost strežnika, saj analiza podatkov poteka lokalno.

 

 

select b.total - a.db as 'Plan Cache Size', c.ple as 'Page Life Expectancy'

from

( select cntr_value as db

from sys.dm_os_performance_counters

where object_name like '%Buffer Manager%' and counter_name like 'Database pages%' ) a, 

( select distinct cntr_value as total

from sys.dm_os_performance_counters

where object_name like '%Buffer Manager%' and counter_name like 'Total pages%' ) b,

( SELECT cntr_value AS ple

FROM sys.dm_os_performance_counters

WHERE object_name like '%Buffer Manager%'

AND counter_name = 'Page life expectancy' ) c

 

Preverimo najbolj zahtevne operacije p oCPU ter s spodnjima querijema. Večinoma težave nastopajo po uporabniških dodelavah postopkov (sloppy programming, indexi, full table scani,...). Na podlagi rezultatov, se najvolj zahtevne operacije analizira ter po potrebi optimizira.

 

-- top 10 CPU

SELECT TOP 10

  qs.execution_count,

  total_CPU_secs = qs.total_worker_time/1000000,

  average_CPU_secs = (qs.total_worker_time/1000000) / qs.execution_count,

  total_elapsed_time_secs = qs.total_elapsed_time/1000000,

  query = st.text,

  qp.query_plan

FROM

  sys.dm_exec_query_stats AS qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st

  CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp

  ORDER BY qs.total_worker_time DESC

 

-- top 10 I/O

SELECT TOP 10

  qs.execution_count, qs.total_logical_reads, 

  qs.total_elapsed_time, qs.max_elapsed_time,

  qs.last_elapsed_time, qs.last_execution_time,

    SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,

    ((CASE qs.statement_end_offset

    WHEN -1 THEN DATALENGTH(qt.text)

    ELSE qs.statement_end_offset

    END - qs.statement_start_offset)/2)+1) as query,

  qp.query_plan

FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt

  CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp

  WHERE qt.encrypted=0

  ORDER BY qs.total_logical_reads DESC

 

Priporočeno je preveriti integriteto podatkovne baze z:

 

USE Pantheon

GO

DBCC CHECKDB WITH NO_INFOMSGS

 

Napačna postavitev ali mankajoči indexi so velikokrat vzrok performančnih težav. Velikokrat pa težave povzroči tudi fragmentacija indexov ali update statistik tabel. Fragmentacijo indexov preverimo z:

 

USE Pantheon;

SELECT a.index_id, name, index_type_desc, avg_fragmentation_in_percent

FROM sys.dm_db_index_physical_stats (DB_ID(), OBJECT_ID(N'Production.Product'),

     NULL, NULL, NULL) AS a

    JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id

WHERE name not like 'NULL' AND avg_fragmentation_in_percent > 10

ORDER by avg_fragmentation_in_percent DESC

GO

 

Priporočeno je tedensko izvajanje rebuilda indexov ter update statistik z:

 

USE Pantheon;

GO

DECLARE @TableName VARCHAR(255)

DECLARE @sql NVARCHAR(500)

DECLARE @fillfactor INT

SET @fillfactor = 80

DECLARE TableCursor CURSOR FOR

SELECT OBJECT_SCHEMA_NAME([object_id])+'.'+name AS TableName

FROM sys.tables

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName

WHILE @@FETCH_STATUS = 0

BEGIN

SET @sql = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'

EXEC (@sql)

SET @sql = 'UPDATE STATISTICS ' + @TableName + ' WITH FULLSCAN'

EXEC (@sql)

FETCH NEXT FROM TableCursor INTO @TableName

END

CLOSE TableCursor

DEALLOCATE TableCursor

GO

 

 


 

Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!