Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
En azından her SQL Server veritabanında iki işletim sistemi dosyası vardır: veri dosyası ve günlük dosyası. Veri dosyaları tablolar, dizinler, saklı yordamlar ve görünümler gibi verileri ve nesneleri içerir. Günlük dosyaları, veritabanındaki tüm işlemleri kurtarmak için gereken bilgileri içerir. Veri dosyaları, ayırma ve yönetim amacıyla dosya gruplarında birlikte gruplandırılabilir.
Veritabanı dosyaları
SQL Server veritabanları, aşağıdaki tabloda gösterildiği gibi üç tür dosyaya sahiptir.
| Dosya | Description |
|---|---|
| Birincil | Veritabanı için başlangıç bilgilerini içerir ve veritabanındaki diğer dosyaları gösterir. Her veritabanında bir birincil veri dosyası vardır. Birincil veri dosyaları için önerilen dosya adı uzantısıdır .mdf. |
| İkincil | İsteğe bağlı kullanıcı tanımlı veri dosyaları. Her dosya farklı bir disk sürücüsüne yerleştirilerek veriler birden çok diske yayılabilir. İkincil veri dosyaları için önerilen dosya adı uzantısıdır .ndf. |
| İşlem günlüğü | Günlük, veritabanını kurtarmak için kullanılan bilgileri barındırıyor. Her veritabanı için en az bir günlük dosyası olmalıdır. İşlem günlükleri için önerilen dosya adı uzantısıdır .ldf. |
Örneğin, adlı Sales basit bir veritabanı, tüm verileri ve nesneleri içeren bir birincil dosyaya ve işlem günlüğü bilgilerini içeren bir günlük dosyasına sahiptir. Bir birincil dosya ve beş ikincil dosya içeren adlı Orders daha karmaşık bir veritabanı oluşturulabilir. Veritabanındaki veriler ve nesneler altı dosyaya dağılır ve dört günlük dosya işlem günlüğü bilgilerini içerir.
Varsayılan olarak, veri ve işlem günlükleri tek diskli sistemleri işlemek için aynı sürücüye ve yola konur. Bu seçenek üretim ortamları için en uygun seçenek olmayabilir. Verileri ve günlük dosyalarını ayrı disklere yerleştirmenizi öneririz.
Mantıksal ve fiziksel dosya adları
SQL Server dosyalarının iki dosya adı türü vardır:
logical_file_name: Tüm Transact-SQL deyimlerinde fiziksel dosyaya başvurmak için kullanılan ad. Mantıksal dosya adı SQL Server tanımlayıcıları için kurallara uymalıdır ve veritabanındaki mantıksal dosya adları arasında benzersiz olmalıdır.os_file_name: Dizin yolunu içeren fiziksel dosyanın adı. İşletim sistemi dosya adlarının kurallarına uyması gerekir.
NAME ve FILENAME bağımsız değişkenleri hakkında daha fazla bilgi için bkz. ALTER DATABASE Dosya ve Dosya Grubu Seçenekleri.
SQL Server'ın birden çok örneği tek bir bilgisayarda çalıştırıldığında, her örnek, örnekte oluşturulan veritabanlarının dosyalarını tutmak için farklı bir varsayılan dizin alır. Daha fazla bilgi için bkz. SQL Server'ın varsayılan ve adlandırılmış örnekleri için dosya konumları.
Dosya sistemi desteği
SQL Server verileri ve günlük dosyaları FAT veya NTFS dosya sistemlerine yerleştirilebilir. Windows sistemlerinde, NTFS'nin güvenlik yönleri nedeniyle Microsoft NTFS dosya sisteminin kullanılmasını önerir.
Ntfs sıkıştırılmış dosya sisteminde okuma/yazma veri dosya grupları ve günlük dosyaları desteklenmez. NTFS sıkıştırılmış dosya sistemine yalnızca salt okunur veritabanlarının ve salt okunur ikincil dosya gruplarının yüklenmesine izin verilir. Alandan tasarruf için dosya sistemi sıkıştırması yerine veri sıkıştırmayı kullanın.
Veri dosyası sayfaları
SQL Server veri dosyasındaki sayfalar, dosyadaki ilk sayfa için sıfırdan (0) başlayarak sıralı olarak numaralandırılır. Veritabanındaki her dosyanın benzersiz bir dosya kimliği numarası vardır. Veritabanındaki bir sayfayı benzersiz olarak tanımlamak için hem dosya kimliği hem de sayfa numarası gereklidir. Aşağıdaki örnek, 4 MB birincil veri dosyası ve 1 MB ikincil veri dosyası içeren bir veritabanındaki sayfa numaralarını gösterir.
Dosya üst bilgisi sayfası, dosyanın öznitelikleri hakkında bilgi içeren ilk sayfadır. Dosyanın başındaki diğer sayfalardan birkaçı, ayırma eşlemeleri gibi sistem bilgilerini de içerir. Hem birincil veri dosyasında hem de ilk günlük dosyasında depolanan sistem sayfalarından biri, veritabanının öznitelikleri hakkında bilgi içeren bir veritabanı önyükleme sayfasıdır.
Dosya boyutu
SQL Server dosyaları, başlangıçta belirtilen boyutlarından otomatik olarak büyüyebilir. Bir dosya tanımlarken belirli bir büyüme artışı belirtebilirsiniz. Dosya her doldurulduğunda, büyüme artışıyla boyutunu artırır. Bir dosya grubunda birden çok dosya varsa, tüm dosyalar dolana kadar otomatik olarak büyümez.
Sayfalar ve sayfa türleri hakkında daha fazla bilgi için bkz . Sayfalar ve kapsamlar mimarisi kılavuzu.
Her dosyanın boyut üst sınırı da belirtilebilir. En büyük boyut belirtilmezse, dosya disk üzerindeki tüm kullanılabilir alanı kullanana kadar büyümeye devam edebilir. Bu özellik özellikle SQL Server, kullanıcının sistem yöneticisine uygun erişime sahip olmadığı bir uygulamaya eklenmiş bir veritabanı olarak kullanıldığında kullanışlıdır. Kullanıcı, veritabanındaki boş alanı izlemenin ve el ile ek alan ayırmanın yönetim yükünü azaltmak için dosyaların gerektiği gibi otomatik olarak büyümesine izin verebilir.
İşlem günlüğü dosyası yönetimi hakkında daha fazla bilgi için bkz. İşlem günlüğü dosyasının boyutunu yönetme.
Veritabanı anlık görüntü dosyaları
Veritabanı anlık görüntüsü tarafından yazma üzerine kopyalama verilerini depolamak için kullanılan dosya biçimi, anlık görüntünün bir kullanıcı tarafından mı oluşturulduğuna yoksa dahili olarak mı kullanıldığına bağlıdır:
Kullanıcı tarafından oluşturulan veritabanı anlık görüntüsü verilerini bir veya daha fazla seyrek dosyada depolar. Seyrek dosya teknolojisi NTFS dosya sisteminin bir özelliğidir. İlk başta seyrek bir dosyada kullanıcı verileri yoktur ve seyrek dosyaya kullanıcı verileri için disk alanı ayrılmamıştır. Veritabanı anlık görüntülerinde seyrek dosyaların kullanımı ve veritabanı anlık görüntülerinin nasıl büyüdüğü hakkında genel bilgi için bkz. Veritabanı Anlık Görüntüsünün Seyrek Dosyasının Boyutunu Görüntüleme.
Veritabanı anlık görüntüleri belirli DBCC komutları tarafından dahili olarak kullanılır. Bu komutlar , ,
DBCC CHECKDBDBCC CHECKTABLEveDBCC CHECKALLOCkomutlarını içerirDBCC CHECKFILEGROUP. İç veritabanı anlık görüntüsü, özgün veritabanı dosyalarının seyrek alternatif veri akışlarını kullanır. Seyrek dosyalar gibi alternatif veri akışları da NTFS dosya sisteminin bir özelliğidir. Seyrek alternatif veri akışlarının kullanılması, dosya boyutunu veya birim istatistiklerini etkilemeden birden çok veri ayırma işleminin tek bir dosya veya klasörle ilişkilendirilmesine olanak tanır.
Filegroups
- Birincil dosya grubu, birincil veri dosyasını ve diğer dosya gruplarına yerleştirilmeyen tüm ikincil dosyaları içerir.
- Yönetim, veri ayırma ve yerleştirme amacıyla veri dosyalarını birlikte gruplandırmak için kullanıcı tanımlı dosya grupları oluşturulabilir.
Örneğin: Data1.ndf, Data2.ndfve Data3.ndf, sırasıyla üç disk sürücüsünde oluşturulabilir ve dosya grubuna fgroup1atanabilir. Daha sonra, dosya grubunda fgroup1özel olarak bir tablo oluşturulabilir. Tablodaki veriler için sorgular üç diske yayılır; performansı artırır. Aynı performans iyileştirmesi, RAID (yedekli bağımsız disk dizisi) şerit kümesinde oluşturulan tek bir dosya kullanılarak gerçekleştirilebilir. Ancak dosyalar ve dosya grupları, yeni disklere kolayca yeni dosyalar eklemenize olanak sağlar.
Tüm veri dosyaları aşağıdaki tabloda listelenen dosya gruplarında depolanır.
| Filegroup | Description |
|---|---|
| Birincil | Birincil dosyayı içeren dosya grubu. Tüm sistem tabloları birincil dosya grubunun bir parçasıdır. |
| Bellek için İyileştirilmiş Veriler | Bellek için iyileştirilmiş bir dosya grubu FILESTREAM dosya grubunu temel alır |
| Filestream | Dosya sistemi dizinlerinde depolanan yapılandırılmamış veriler. |
| Kullanıcı tanımlı | Kullanıcı veritabanını ilk kez oluşturduğunda veya daha sonra değiştirdiğinde kullanıcı tarafından oluşturulan herhangi bir dosya grubu. |
Varsayılan (birincil) dosya grubu
Nesneler veritabanında hangi dosya grubuna ait olduklarını belirtmeden oluşturulduğunda, varsayılan dosya grubuna atanırlar. Herhangi bir zamanda, tam olarak bir dosya grubu varsayılan dosya grubu olarak belirlenir. Varsayılan dosya grubundaki dosyalar, diğer dosya gruplarına ayrılmamış yeni nesneleri barındıracak kadar büyük olmalıdır.
PRIMARY deyimi kullanılarak ALTER DATABASE değiştirilmediği sürece dosya grubu varsayılan dosya grubudur. Sistem nesneleri ve tabloları için ayırma, yeni varsayılan dosya grubu yerine PRIMARY dosya grubu içinde kalır.
Bellek için iyileştirilmiş veri dosya grubu
Bellek için iyileştirilmiş dosya grupları hakkında daha fazla bilgi için bkz. Bellek için iyileştirilmiş dosya grubu.
FILESTREAM dosya grubu
FILESTREAM dosya grupları hakkında daha fazla bilgi için bkz. FILESTREAM ve FILESTREAM-Enabled Veritabanı Oluşturma.
Dosya ve dosya grubu örneği
Aşağıdaki örnek, SQL Server örneğinde bir veritabanı oluşturur. Veritabanının birincil veri dosyası, kullanıcı tanımlı dosya grubu ve günlük dosyası vardır. Birincil veri dosyası birincil dosya grubundadır ve kullanıcı tanımlı dosya grubunda iki ikincil veri dosyası vardır. Deyimi ALTER DATABASE , kullanıcı tanımlı dosya grubunu varsayılan yapar. Ardından kullanıcı tanımlı dosya grubunu belirten bir tablo oluşturulur. (Bu örnek, SQL Server sürümünü belirtmemek için genel bir yol C:\Program Files\Microsoft SQL Server\MSSQL.1 kullanır.)
USE master;
GO
-- Create the database with the default data
-- filegroup, FILESTREAM filegroup and a log file. Specify the
-- growth increment and the max size for the
-- primary data file.
CREATE DATABASE MyDB
ON
PRIMARY (
NAME = 'MyDB_Primary',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_Prm.mdf',
SIZE = 4 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 1 MB
),
FILEGROUP MyDB_FG1 (
NAME = 'MyDB_FG1_Dat1',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_1.ndf',
SIZE = 1 MB,
MAXSIZE = 10 MB, FILEGROWTH = 1 MB
), (
NAME = 'MyDB_FG1_Dat2',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_2.ndf',
SIZE = 1 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 1 MB
),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM (
NAME = 'MyDB_FG_FS',
FILENAME = 'C:\Data\filestream1'
)
LOG ON (
NAME = 'MyDB_log',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB.ldf',
SIZE = 1 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 1 MB
);
ALTER DATABASE MyDB
MODIFY FILEGROUP MyDB_FG1 DEFAULT;
-- Create a table in the user-defined filegroup.
USE MyDB;
GO
CREATE TABLE MyTable
(
cola INT PRIMARY KEY,
colb CHAR (8)
) ON MyDB_FG1;
GO
-- Create a table in the FILESTREAM filegroup
CREATE TABLE MyFSTable
(
cola INT PRIMARY KEY,
colb VARBINARY (MAX) FILESTREAM NULL
);
Aşağıdaki çizim önceki örneğin sonuçlarını özetler (FILESTREAM verileri hariç).
Dosya ve dosya grubu doldurma stratejisi
Dosya grupları, her dosya grubundaki tüm dosyalar arasında orantılı bir doldurma stratejisi kullanır. Veriler dosya grubuna yazıldıkça, SQL Server Veritabanı Altyapısı, dosya grubundaki her bir dosyaya, boş alanla orantılı olarak bir miktar veri yazar; böylece tüm veriler ilk dosya dolana kadar yazılmak yerine, boş alana göre dosyalar arasında dengeli bir şekilde dağıtılır. Ardından sonraki dosyaya yazar. Örneğin, dosya f1 'te 100 MB boş ve dosya f2 'de 200 MB boş varsa, dosya f1 'den bir uzantı, dosya f2 'den iki uzantı ve benzeri şekilde verilir. Bu şekilde, her iki dosya da yaklaşık aynı anda dolmakta ve basit şeritleme elde edilir.
Örneğin, bir dosya grubu üç dosyadan oluşur ve tümü otomatik olarak büyüyecek şekilde ayarlanır. Dosya grubundaki tüm dosyalardaki alan tükendiğinde, yalnızca ilk dosya genişletilir. İlk dosya dolduğunda ve dosya grubuna daha fazla veri yazılamıyorsa, ikinci dosya genişletilir. İkinci dosya dolduğunda ve dosya grubuna başka veri yazılamıyorsa, üçüncü dosya genişletilir. Üçüncü dosya dolarsa ve dosya grubuna başka veri yazılamazsa, ilk dosya yeniden genişletilir ve bu şekilde devam eder.
Dosya ve dosya grubu tasarlama kuralları
Dosyalar ve dosya gruplarıyla ilgili aşağıdaki kurallar:
Dosya veya dosya grubu birden fazla veritabanı tarafından kullanılamaz. Örneğin, satış veritabanındaki verileri ve nesneleri içeren dosyası
sales.mdfvesales.ndfdiğer veritabanları tarafından kullanılamaz.Bir dosya yalnızca bir dosya grubunun üyesi olabilir.
İşlem günlüğü dosyaları hiçbir zaman hiçbir dosya grubunun parçası olmaz.
Recommendations
Dosyalar ve dosya gruplarıyla çalışırken öneriler:
Veritabanlarının çoğu tek bir veri dosyası ve tek bir işlem günlüğü dosyasıyla iyi çalışır.
Birden çok veri dosyası kullanıyorsanız, ek dosya için ikinci bir dosya grubu oluşturun ve bu dosya grubunu varsayılan dosya grubu yapın. Bu şekilde, birincil dosya yalnızca sistem tablolarını ve nesnelerini içerir.
Performansı en üst düzeye çıkarmak için, mümkün olduğunca farklı kullanılabilir disklerde dosya veya dosya grupları oluşturun. Alan için büyük ölçüde rekabet eden nesneleri farklı dosya gruplarına yerleştirin.
Belirli fiziksel disklere nesne yerleştirmeyi etkinleştirmek için dosya gruplarını kullanın.
Aynı birleştirme sorgularında kullanılan farklı tabloları farklı dosya gruplarına yerleştirin. Bu adım, paralel disk G/Ç'nin birleştirilmiş verileri araması nedeniyle performansı artırır.
Yoğun olarak erişilen tabloları ve bu tablolara ait olmayan dizinleri farklı dosya gruplarına yerleştirin. Dosyalar farklı fiziksel disklerde bulunuyorsa paralel G/Ç nedeniyle farklı dosya gruplarının kullanılması performansı artırır.
İşlem günlüğü dosyalarını, diğer dosyaları ve dosya gruplarını içeren aynı fiziksel diske yerleştirmeyin.
Diskpart gibi araçları kullanarak veritabanı dosyalarının bulunduğu bir birimi veya bölümü genişletmeniz gerekiyorsa, önce tüm sistem ve kullanıcı veritabanlarını yedeklemeli ve SQL Server hizmetlerini durdurmalısınız. Ayrıca, disk birimleri başarıyla genişletildikten sonra, birimde bulunan tüm veritabanlarının fiziksel bütünlüğünü sağlamak için DBCC CHECKDB komutunu çalıştırmayı düşünmelisiniz.
İşlem günlüğü dosyası yönetimi önerileri hakkında daha fazla bilgi için bkz. İşlem günlüğü dosyasının boyutunu yönetme.