Roznice pomiedzy MSSql 7.0 i 2000
kdorko@gmail.com - 23-02-2007 00:01
Roznice pomiedzy MSSql 7.0 i 2000
Mam problem z wydajnoscia bazydanych na MSSQL serwerze 2000 i 2005 dla MSSQL 7.0 wszysztko wyglada ok
problem dotyczy uzycie view Create view vName As
SELECT * FROM Table_T t where (user_name() like '%-%' and col1 in
(select e.conum from Security_details e WHERE USER_NAME() = e.username))
or (user_name() like '%.%' and col1 not in (select e.col1 from SecuritySecurity_details e WHERE
USER_NAME() = e.username))
Gdy robie select na db copability level 7.0 z takiego view za pierwszym razem trwa to dlugo np 40s ale kazde nastepne wywolanie trwa 2 lub 0 s. Natomiast na 8.0 lub 9.0 za kazdym razem trwa to 40 s
Tabele maja indexsy podobne selekcje sa szybkie gdy uzywam tabel bezposrednio - problem polego na tym ze nie moge ich uzywac :)
pytanie jest czy moge cos zmienic (inne view lub jakiec ustawienia servera) aby jednak dzialalo to szybciej na 8.0 i 9.0 No i co jest dokladnie powodem takich roznic (wiem co nie co o uzywaniu tymczasowych procedur w przypadu prepare na serwerze 6.5 Czy to moze byc wyjasnieniem tego problemu dla 7.0 ?)?
Problem jest duzy bo trzymanie bazy danych na poziomie 7.0 na serwerze 2005 jest bardzo nie ekonomiczne :)
Marcin A. Guzowski - 24-02-2007 00:02
kdorko@gmail.com napisał(a):
> Problem jest duzy bo trzymanie bazy danych na poziomie 7.0 na serwerze > 2005 jest bardzo nie ekonomiczne :)
Powodów może być cały szereg, bo między wersjami 7.0 a 8.0, a zwłaszcza 9.0 różnice dotyczące silnika są zasadnicze.
Powodem rozbieżności wydajnościowych jest w 99% przypadków query optimizer. Przeprowadza on estymację kosztową i dobiera najbardziej optymalny plan wykonania. Jednym z głównych czynników, jakie rozważa optimizer jest szacowana liczba wierszy (ENR, Estimated Number of Rows) na każdym z etapów realizacji zapytania. Wielkość ta jest szacowana na podstawie statystyk kolumn, rozmiarów tabel złączenia itd. W przypadku zastosowania funkcji niedeterministycznej SUSER_SNAME() estymacja jest bardzo problematyczna i sytuacja mocno się komplikuje, co często prowadzi do powstawania niewydajnego planu wykonania.
Na Twoim miejscu przepisałbym zapytanie z definicji widoku na joiny, gdyż z nimi SQL Server 2005 radzi sobie zwykle lepiej. To po prostu kwestia strategii optymalizacji wybranej przez twórców najnowszej wersji MSSQLa. W tej materii nie ma jednoznacznie dobrych i złych rozwiązań.
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
kdorko@gmail.com - 26-02-2007 00:05
> Na Twoim miejscu przepisałbym zapytanie z definicji widoku na joiny, > gdyż z nimi SQL Server 2005 radzi sobie zwykle lepiej. To po prostu > kwestia strategii optymalizacji wybranej przez twórców najnowszej wersji > MSSQLa. W tej materii nie ma jednoznacznie dobrych i złych rozwiązań.
Hej Dzieki za wskazowki Przynajmniej teraz wiem ze nie mam co szukac wyjscia w konfiguracji servera Uzycie joinow jest jednak w tym przypadku nieco problematyczne bo te views musza byc transakcyjne tzn Musze miec mozliwosc wykonywania insert, update i delete Pewnie bede musial pocwiczyc triggery instead of do zrealizowania tej funkcjonalnosci
A co do strategi MS to sie zgadzam cos zawsze trzeba wybrac a nie zawsze kazdemu to pasuje :)
Pozdrawiam Krzysztof Dorko
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
[MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?=
MSSQL Express czy Oracle Express
MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
[MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?=
Pobierananie danych z innej bazy danych w MSSQL
Migracja MSSQL 2005 CTP na 2005 Express
MSSQL , funkcja pobierajaca sama date (bez czasu) w funkcji
zanotowane.pldoc.pisz.plpdf.pisz.pllatwa-kasiora.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|