http___programlamanotlari.blogspot.com.tr_2010_10_31_archive.html_1.xml
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 11.2 12.1 13.1 14.1 14.2 14.3 15.1 15.2 15.3 15.4 16.1 17.1
Fragmented MSSQL uCMDB Tables - April 14th, 2011 - Posted in Universal Configuration Management Database - Write comment Run this command as regular select statement from table, for example: select * from sys.dm_db_index_physical_stats (DB_ID('Database_Name_Here'), object_id('Table_Name_Here'), NULL, NULL, 'SAMPLED') The Avg_fragmentation_in_percent column returned by sys.dm_db_index_physical_stats is the logical and extent fragmentation of the index. For more information about sys.dm_db_index_physical_stats, see Microsoft SQL Server 2005 Books Online at: link. Handling Fragmentation The table column Avg_fragmentation_in_percent returned by sys.dm_db_index_physical_stats reflects the degree of fragmentation per index. Based on this value, you can determine whether to handle the fragmentation and which method to use in handling it. Use the following rough guidelines to determine the best method to correct the fragmentation: - Between 5% and 30%. Use the ALTER INDEX REORGANIZE command to reorganize the index. Index reorganization is always executed online. - Greater than 30%. Use the ALTER INDEX REBUILD command to rebuild the index. Index rebuilding can be executed online or offline. Rebuild the indexes online to achieve the availability similar to that of the Reorganize option. Very low levels of fragmentation (less than 5%) should not be addressed by either of these commands due to the negligible benefit gained from removing such a small amount of fragmentation. For more information on defragmenting indexes, refer to "Reorganizing and Rebuilding Indexes" under Designing and Implementing Structured Storage in SQL Server Books Online (link).
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1 44.1 45.1 46.1 47.1 48.1 49.1
4 Kasım 2010 Perşembe SQL Server Performansı için faydalı DMV(Dynamic Management View) ler Performans sıkıntısı oluşan sorguları bulmak ve SQL Server'ın performansını arttırmak için DMV lerden faydanılabilir. sys.dm_exec_requests, sys.dm_exec_sessions : Her iki view de server'da şu an çalışan istekleri getirir. Anlık olarak, uzun süren ve düşük performans gösteren sorguları bulmak için kullanılabilir. sys.dm_exec_query_stats : Çalışan sorguların cache planlarını getirir. sys.dm_exec_sql_text En kötü performanslı sorguyu tespit ettiğinizde, bu view i kullanarak sorgunun tam metnine ulaşabilirsiniz. DBCC INPUTBUFFER a benzer ve query handle parametresi alır. Query handle a sys.dm_exec_requests ve sys.dm_exec_query_stats view lerinde ulaşılabilir. sys.dm_os_wait_stats Server bazında bekleme istatistiklerini getirir ve dar boğazları tepit etmek için kullanılabilir. sys.dm_db_index_usage_stats Her bir indeksin kullanım istatistiklerini gösterir. Kullanılmayan ve az kullanılan indeksleri bulmak için kullanılabilir. Kullanılmayan indeklerin kaldırılması, veri güncelleme performansını arttırır, disk kullanımını azaltır. DMV ler, SQL server'ın son açılışından itibaren olan istatistikleri gösterir. sys.dm_db_missing_index_details Yeni indeks ihtiyacını tespit etmek için kullanılır. sys.dm_exec_requests, sys.dm_exec_sessions : Her iki view de server'da şu an çalışan istekleri getirir. Anlık olarak, uzun süren ve düşük performans gösteren sorguları bulmak için kullanılabilir. sys.dm_exec_query_stats : Çalışan sorguların cache planlarını getirir. sys.dm_exec_sql_text En kötü performanslı sorguyu tespit ettiğinizde, bu view i kullanarak sorgunun tam metnine ulaşabilirsiniz. DBCC INPUTBUFFER a benzer ve query handle parametresi alır. Query handle a sys.dm_exec_requests ve sys.dm_exec_query_stats view lerinde ulaşılabilir. sys.dm_os_wait_stats Server bazında bekleme istatistiklerini getirir ve dar boğazları tepit etmek için kullanılabilir. sys.dm_db_index_usage_stats Her bir indeksin kullanım istatistiklerini gösterir. Kullanılmayan ve az kullanılan indeksleri bulmak için kullanılabilir. Kullanılmayan indeklerin kaldırılması, veri güncelleme performansını arttırır, disk kullanımını azaltır. DMV ler, SQL server'ın son açılışından itibaren olan istatistikleri gösterir. sys.dm_db_missing_index_details Yeni indeks ihtiyacını tespit etmek için kullanılır. Etiketler: dmv, Performance, sql server 31 Ekim 2010 Pazar Partitioning Nedir? SQL Server'da partitioning yapısını, bir kitapevinde, birbirleriyle ilgili kitapları aynı raflara, ilgili olmayan kitapları farklı raflara koymaya benzetebiliriz. Romanlar bir rafa, Bilgisayar kitapları başka bir rafa gibi. Çok büyük bir tablomuz varsa, tablolarımızı bazı özelliklerine farklı partitionlara bölebilir ve performansımızı arttırabilir ve tablonun yönetemini kolaylaştırabiliriz. Örneğin bir satış tablosunu düşünün. Üzerinde binlerce kayıt olabilir. Ancak en çok bu yılın kayıtlarına bakar, diğer kayıtları daha az sorgularız. Sorgularımızda sql server'ın bir tablonun tüm kayıtlarını aramak yerine sadece daha az sayfayı taramasını, tabloyu bölerek sağlayabiliriz. Hatta eski kayıtlar ve yeni kayıtlar için farklı zamanlarda backup alabiliriz. Satırlara göre farklı bölümlere ayırmaya horizontal partitioning denir. Eğer bir tablo üzerinde çok sık kullandığımız kolonların yanında çok ender sorguladığımız kolonlar varsa, tabloyu kolonlara göre de bölümlere ayırabiliriz. Buna da vertical partioning denir. Bir tabloyu satırlardan ve sütünlardan oluşan bir yapı olarak düşünürsek, bu durumda tabloyu dikey olarak bölmüş oluruz. Vertical partioning ismi de buradan gelir. Çok büyük bir tablomuz varsa, tablolarımızı bazı özelliklerine farklı partitionlara bölebilir ve performansımızı arttırabilir ve tablonun yönetemini kolaylaştırabiliriz. Örneğin bir satış tablosunu düşünün. Üzerinde binlerce kayıt olabilir. Ancak en çok bu yılın kayıtlarına bakar, diğer kayıtları daha az sorgularız. Sorgularımızda sql server'ın bir tablonun tüm kayıtlarını aramak yerine sadece daha az sayfayı taramasını, tabloyu bölerek sağlayabiliriz. Hatta eski kayıtlar ve yeni kayıtlar için farklı zamanlarda backup alabiliriz. Satırlara göre farklı bölümlere ayırmaya horizontal partitioning denir. Eğer bir tablo üzerinde çok sık kullandığımız kolonların yanında çok ender sorguladığımız kolonlar varsa, tabloyu kolonlara göre de bölümlere ayırabiliriz. Buna da vertical partioning denir. Bir tabloyu satırlardan ve sütünlardan oluşan bir yapı olarak düşünürsek, bu durumda tabloyu dikey olarak bölmüş oluruz. Vertical partioning ismi de buradan gelir. Etiketler: partioning, sql server SQL Server da Index Türleri Index, SQL Server tablolarındaki verilere kolayca ulaşmamızı sağlayan yapılardır. Bir kitabın sonundaki indekse benzetilebilir. Hangi verinin nerede bulunduğu indeksler üzerinde tutulur. Temel olarak SQL Server'da iki tür indeks vardır. Clustered Index ve Nonclustered Indeks. Clustered Index, tablonun aynısıdır ve tablodaki tüm alanlar yer alır, sadece veriler, clustered indeks olarak tanımlanmış alanların sırasında tutulur, ancak nonclustered index'de sadece indeksteki veriler ve o verilerin nerede bulunduğuna dair işaretler tutulur. Üzerinde clustered indeks tanımlı olmayan tabloya heap tablo denir. Ve heap tablolarda veriler sıralı değildir. Üzerinde clustered indeks tanımlı olan bir tablonun iki versiyonu olur, heap orijinal tablodur ve bu tablonun sıralı hali de clustered indekste durur. Özel birşey söylenmezse, primary key yaratılırken, primary key alanına göre clustered indeks yaratılır. Bir tablo için sadece 1 tane clustered indeks yaratılabilir. Bu genel ayrımdan sonra içeriklerine göre indeksler aşağıdaki şekilde gruplandırılabilir. Simple Tek kolondan oluşan bir indekstir. Örneğin sadece ad kolonundan oluşan veya ad ve soyad birleşiminden oluşur. Compound 2 veya daha fazla kolondan oluşan indekstir. Unique Unique indeks olarak tanımlı alanlar için, aynı verilerden sadece bir tane girilmesine izin veren indeks türüdür. Temel olarak SQL Server'da iki tür indeks vardır. Clustered Index ve Nonclustered Indeks. Clustered Index, tablonun aynısıdır ve tablodaki tüm alanlar yer alır, sadece veriler, clustered indeks olarak tanımlanmış alanların sırasında tutulur, ancak nonclustered index'de sadece indeksteki veriler ve o verilerin nerede bulunduğuna dair işaretler tutulur. Üzerinde clustered indeks tanımlı olmayan tabloya heap tablo denir. Ve heap tablolarda veriler sıralı değildir. Üzerinde clustered indeks tanımlı olan bir tablonun iki versiyonu olur, heap orijinal tablodur ve bu tablonun sıralı hali de clustered indekste durur. Özel birşey söylenmezse, primary key yaratılırken, primary key alanına göre clustered indeks yaratılır. Bir tablo için sadece 1 tane clustered indeks yaratılabilir. Bu genel ayrımdan sonra içeriklerine göre indeksler aşağıdaki şekilde gruplandırılabilir. Simple Tek kolondan oluşan bir indekstir. Örneğin sadece ad kolonundan oluşan veya ad ve soyad birleşiminden oluşur. Compound 2 veya daha fazla kolondan oluşan indekstir. Unique Unique indeks olarak tanımlı alanlar için, aynı verilerden sadece bir tane girilmesine izin veren indeks türüdür. Etiketler: index, sql server