MSSQL 2014 - dlouhá odezva velkých SELECTů

PříspěvekNapsal: 12.05.2015 14:17
od jan.havranek
Může se stát, že uživatel narazí na problém s MSSQL 2014.
Za určitých konstelací může extrémně dlouho (desítky minut až hodiny) trvat konkrétní složitý SELECT, který na starší verzi MSSQL proběhl bez problémů.

1/ Problém způsobuje množství použitých subSELECTů (cca 20 a více). Od určité hranice stoupá čas pro vytvoření exekučního plánu exponenciálně.
2/ Microsoft o problému ví a bude jej dále řešit, řešení má být údajně zahrnuto do SP1.
3/ V případ výskytu problému existuje jediné řešení, databázi HeO přepnout do nižšího Compatibility Levelu (mód odpovídající nižší verzi MSSQL).

Z těchto důvodů je v HeO nový nepovinný parametr CmptLevel pro konfigurační soubor Helios.ini.
V případě potřeby se musí do konfigurace doplnit ručně.
Parametr je:
Kód: Vybrat vše
CmptLevel=110

a je nutné jej umístit někam do sekce:
Kód: Vybrat vše
[SQLServer]


Doporučeno je použít parametr pouze v případě výskytu výkonnostních problémů!

-----

Do helios.ini byla tato možnost nastavení hodnoty Compatibility level doplněna obecně.
CL lze nastavit vždy pouze o maximálně 2 verze nižší, než je aktuální verze MSSQL,
tedy např. pro MSSQL 2014 jsou povoleny hodnoty 100, 110 a 120.

Kód: Vybrat vše
100 = SQL Server 2008/2008R2
110 = SQL Server 2012
120 = SQL Server 2014

Re: MSSQL 2014 - dlouhá odezva velkých SELECTů

PříspěvekNapsal: 28.05.2015 09:39
od jan.havranek
Společnost Microsoft vydala první Service Pack (SP1) pro SQL Server 2014.
Díky tomu se SQL Server 2014 stává oficiálně podporovaným systémem pro provoz Helios Orange. Balíček SP1 řeší i výše zmíněné výkonnostní problémy, zaznamenané při použití MSSQL Server 2014. Konkrétně nedobíhající dotazy s vyšším množstvím poddotazů. Z tohoto důvodu doporučujeme instalaci tohoto SP1.

Balíček lze stáhnout zde:
http://www.microsoft.com/en-us/download/details.aspx?id=46694
Pokud balíček nepůjde stáhnout přes jiné prohlížeče, použijte Internet Explorer.

MSSQL 2014 - dlouhá odezva - pokračování

PříspěvekNapsal: 09.12.2015 14:32
od jan.havranek
Microsoft do SQL serveru 2014 přinesl nový query optimizer.
Tento optimizér je "srdcem" vlastního serveru a stará se o vytváření exekučních plánů. Čili jednoduše řečeno – vytváří návrh, jak konkrétně budou dotazy zpracovávány.

Bohužel se zdá, že u složitějších dotazů funguje původní optimizér lépe, než nový (SQL 2014). Tím pádem se pak SQL server jeví jako méně výkonný, než předcházející verze serverů. Nejmarkantnější případy zpomalení odstranil první ServicePack pro MS SQL 2014, ale evidentně ne všechny. Některé "nemoce" výkonu SQL však přetrvávají a je třeba zaujmou jedno z následujících řešení:

Doporučené řešení:
Uvádíme zde: https://forum.helios.eu/orange/forum/viewtopic.php?f=25&t=769

--------------------

Další možné řešení (nedoporučujeme):
Na SQL serveru nastavit nižší compatibility_level, který zajistí používání původního optimizéru:

Kód: Vybrat vše
ALTER DATABASE Helios003 SET COMPATIBILITY_LEVEL = 110


Protože Helios standardně Compatibility level kontroluje a nastavuje ho na nejvyšší možný (dle verze SQL), je potřeba nastavit v Helios.ini zmíněný parametr:

Kód: Vybrat vše
CmptLevel=110


Více o compatibility levelu jde v tomto článku:
Differences Between Lower Compatibility Levels and Level 120
https://msdn.microsoft.com/en-us/library/bb510680.aspx