Welcome to Sign in | Help
in Search

Partitionarea tabelelor de sistem MS-SQL

Last post 11-16-2012, 3:04 PM by mitza. 8 replies.
Sort Posts: Previous Next
  •  11-09-2012, 10:38 AM 9465

    Partitionarea tabelelor de sistem MS-SQL

    Hello World!
    Se pot partiona tabelele de sistem din Microsoft SQL Server, care de fapt sunt view-uri de sistem(sys.tables, sys.columns, ...), sau se pot crea indexi sau statistici pe acestea, in vederea cresterii vitezei de accesare a lor, in conditiile unei aplicatii cu foarte multe tabele, implicit coloane si indexi si la care timpul de cautare in aceste tabele este foarte mare?
    Va multumesc.
    Filed under:
  •  11-15-2012, 12:55 PM 9469 in reply to 9465

    Re: Partitionarea tabelelor de sistem MS-SQL

    Obiectele sistem nu pot fi partitionate si in general parcurgerea lor nu determina probleme de performanta cu exceptia situatilor speciale ca de exemplu instructiunilor de tip DDL (CREATE, ALTER, DELETE) in tranzactii.

    Este posibil sa detaliati un pic cazul dumneavoastra?



    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  11-15-2012, 1:46 PM 9470 in reply to 9469

    Re: Partitionarea tabelelor de sistem MS-SQL

    Am o baza de date cu foarte multe tabele(sute de mii - spre milioane cu foarte multe date fiecare), iar in momentul in care creez un nou tabel, verific daca mai exista in "sys.tables". Avand sute de mii/milioane de linii in "sys.tables", verificarea numelui tabelului, merge foarte greu. Am aceeasi problema si la indexi, in tabelul de sistem pentru indexi "sys.indexes". Orice cautare in aceste tabele, inclusiv afisarea anumitor tabele in interfata(folosind filtrul), merge foarte greu. Daca nu se pot partitiona, se pot crea indexi sau statistici pe aceste tabele, deoarece in interfata apar optiunile "Indexes" si "Statistics". Exista alta posibilitate de optimizare. Va multumesc.
  •  11-15-2012, 2:24 PM 9472 in reply to 9470

    Re: Partitionarea tabelelor de sistem MS-SQL

    Cum anume faceti verificarea? Urmatorul script poate fi o alternativa:
    1
    2
    3
    4
    5
    USE AdventureWorks2008R2;
    GO
    IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
    DROP TABLE dbo.AWBuildVersion;
    GO
    Ce informatie aveti nevoie din sys.indexes?

    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  11-15-2012, 2:50 PM 9474 in reply to 9472

    Re: Partitionarea tabelelor de sistem MS-SQL

    IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'nume_tabel') AND name = N'nume_index')
    --daca nu exista index-ul, se creaza;
    Acelasi lucru si in cazul tabelelor, verificarea in tabelele de sistem. In plus, aducerea tabelelor in interfata SQL Management Studio folosind filtrarea lor => interogarea tabelelor de sistem => performanta scazuta, in cazul in care cautarea se face pe sute de mii/milioane de tabele;
  •  11-15-2012, 4:55 PM 9475 in reply to 9474

    Re: Partitionarea tabelelor de sistem MS-SQL

    Aducerea tabelelor in interfata inseamna interogarea lor?
    Daca da atunci ati putea incerca sa folositi un SELECT daca le vreti doar afisate. Pentru editare va fi mai greu asa este insa oricum nu este recomandat sa modificati un tabel din SSMS.

    Am o varianta pentru verificarea existentei unui index:
    1
    2
    IF ISNULL(INDEXPROPERTY(OBJECT_ID(N'[HumanResources].[Department]'),N'AK_Department_Name','IndexID'),-1)=-1
    PRINT 'No Index'


    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  11-16-2012, 10:10 AM 9476 in reply to 9475

    Re: Partitionarea tabelelor de sistem MS-SQL

    Sper sa fie mai optima metoda aceasta. In nici un caz nu vreu sa modific nimic, ci doar sa verific: cand vreau sa adaug un nou index, il caut in tabelul de sistem "sys.indexes" daca exista, prin milioane de linii(indexi) si intrebarea initiala era daca se pot crea indexi sau statistici pe tabelele/view-urile de sistem in SQL Server. Multumesc pentru raspuns.
  •  11-16-2012, 12:21 PM 9477 in reply to 9476

    Re: Partitionarea tabelelor de sistem MS-SQL

    Strict legat de intrebare: nu se pot indexa obiectele sistem.

    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  11-16-2012, 3:04 PM 9478 in reply to 9477

    Re: Partitionarea tabelelor de sistem MS-SQL

    Va multumesc.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems