Aracılığıyla paylaş


Linux üzerinde SQL Server 2025 için tmpfs'de tempdb'yi etkinleştirme ve çalıştırma

Şunlar için geçerlidir: Linux üzerinde SQL Server 2025 (17.x)

Bu makale, SQL Server 2025'te (17.x) tempdb dosya sisteminde veritabanı dosyalarını etkinleştirmenize ve çalıştırmanıza yol gösterir.

Linux ve kapsayıcılarda SQL Server geleneksel olarak SQL Server veritabanı dosyalarını ve günlüklerini dağıtmak için XFS ve ext4 dosya sistemlerini destekler. Ancak, gibi tempdbverilerin bir çalışma süresinden diğerine kaydedilmesini gerektirmeyen geçici veritabanları için bellek (RAM) kullanan bir tmpfs dosya sistemi kullanmak, tabanlı iş yükleri için tempdbgenel performansı artırabilir.

tmpfs dosya sistemi hakkında daha fazla bilgi için bkz. tmpfs - Linux Çekirdeği belgeleri.

Konfigürasyon Açıklama
Desteklenen yapılandırma tmpfs , yeniden başlatmalar arasında kaydedilmesi gerekmeyen kalıcı olmayan verileri depolamak için idealdir. Şu anda hem kapsayıcı hem de kapsayıcı tabanlı olmayan dağıtımlar için tempdb dosya sisteminde yalnızca veritabanı dosyaları desteklenmektedir.
Desteklenmeyen yapılandırma tmpfs dosya sistemi SQL kapsayıcı dağıtımlarındaki kullanıcı veritabanları için kullanılabilir, ancak yalnızca geliştirme amacıyla kullanılabilir. Ancak bu yapılandırma desteklenmez. GitHub'da bu senaryo için geri bildirim sağlayabilirsiniz.

Fiziksel veya sanal makine dağıtımları

Fiziksel veya sanal makinelerde Linux üzerinde SQL Server için tmpfs desteğini etkinleştirmek için , sudo erişimi gerektiren tmpfs dosya sistemini doğru bağlamanız gerekir. Bağlama noktaları ayarlandıktan sonra, tempdb dosyalarını bu noktalara yerleştirebilir ve tempdb dosya sistemine bağlanmış olarak SQL Server'ı başlatabilirsiniz.

Tmpfs'yi etkinleştir tempdb

  1. tempdb Dizini oluşturun.

    Komutunu kullanarak mkdir veritabanı için tempdb bir dizin oluşturun. SQL Server erişimine izin vermek için mssql kullanıcı ve grubun sahibi olduğundan emin olun.

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. tmpfs dosya sistemini bağlayın.

    tmpfs dosya sistemini bağlamak için aşağıdaki komutu kullanın:

    sudo mount -t tmpfs -o size=4G tmpfs /var/opt/mssql/tempdb/
    

    -t seçeneği, bu durumda tmpfsolan dosya sisteminin türünü belirtir.

    -o seçeneği bağlama seçeneklerini belirtmenize olanak tanır. Burada, size=4Gen fazla tmpfs boyutunu 4 GB olarak ayarlar, yani 4 GB'a kadar RAM kullanabilir.

    Bu komut tmpfs'yi SQL Server tempdb veritabanı tarafından kullanılan hedef dizine bağlar.

    İsteğe bağlı olarak, bağlamaları yeniden başlatmalar arasında korumak için fstab içine ekleyin.

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Dosya konumunu güncelleştirin tempdb .

    SQL Server'ın çalışır durumda olduğundan emin olun. SQL Server Management Studio'yu (SSMS) kullanarak SQL Server örneğine bağlanın ve aşağıdaki T-SQL komutlarını çalıştırın.

    Aşağıdaki T-SQL betiğini kullanarak tüm tempdb dosyaları tanımlayın ve ardından komutunu çalıştırarak ALTER DATABASE dosya konumunu güncelleştirin tempdb :

    SELECT [name],
           physical_name
    FROM sys.master_files
    WHERE database_id = 2;
    

    Görmekte olduğunuz tempdb için dosya sayısına bağlı olarak, ALTER DATABASE komutlarını aşağıdaki gibi oluşturursunuz:

    ALTER DATABASE tempdb
        MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf');
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = tempdev2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf');
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = tempdev3, FILENAME = '/var/opt/mssql/tempdb/tempdb3.mdf');
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = tempdev4, FILENAME = '/var/opt/mssql/tempdb/tempdb4.mdf');
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
    
  4. Değişiklikleri uygulamak için SQL Server'ı yeniden başlatın.

    sudo systemctl restart mssql-server
    
  5. Dosyaların konumunu doğrulayın tempdb .

    SQL Server çalışır duruma geldikten sonra SQL Server Management Studio (SSMS) gibi bir araç kullanarak SQL Server'a bağlanarak veri ve günlük dosyalarının artık yeni dizinde bulunduğunu doğrulayın tempdb .

    SELECT [name],
           physical_name
    FROM sys.master_files
    WHERE database_id = 2;
    

Artık olan yeni bağlama yolunda tempdbtüm /var/opt/mssql/tempdb veritabanı dosyalarını görmeniz gerekir.

Tmpfs bağlamasını sık yeniden boyutlandırma

Ayrıca dolu olması durumunda tempdb bağlamasını yeniden boyutlandırabilirsiniz. Sık erişimli yeniden boyutlandırmak için aşağıdaki komutu çalıştırarak tmpfs bağlamasını 6 GB'a yeniden boyutlandırın:

mount -o remount,size=6G /var/opt/mssql/tempdb

İsteğe bağlı olarak, fstab girişini değiştirerek yeni boyutun yeniden başlatmalar boyunca kalıcı olmasını sağlayın.

sudo sed -i 's|tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0|tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=6G 0 0|' /etc/fstab

Konteyner dağıtımları

Geliştirici iş yükleri için , tmpfs kullanıcı veritabanları için kullanılabilir. tmpfs dosya sistemleri, kapsayıcılara dağıtılan kullanıcı veritabanları için test çalışmalarını önemli ölçüde hızlandırabilir. Tmpfs disk depolama yerine RAM kullandığından, hızlı okuma/yazma işlemlerine olanak tanır. Bu yapılandırma, hızlı yinelemelerin gerekli olduğu geliştirme ve test ortamlarında kullanışlıdır.

Ancak, kullanıcı veritabanları için tmpfsdesteklenmez . GitHub'datmpfs üzerindeki kullanıcı veritabanlarıyla ilgili geri bildirim sağlayabilirsiniz.

Yalnızca tempdb tmpfs dosya sisteminde veritabanlarını barındırma

SQL Server kapsayıcısı dağıtıyorsanız ve kapsayıcının tempdb kullandığından emin olmak istiyorsanız, aşağıdaki komutu çalıştırabilirsiniz:

docker run \
  -e ACCEPT_EULA=Y \
  -e MSSQL_SA_PASSWORD = <password>\
  --tmpfs /var/opt/mssql/tempdb:uid=10001,gid=10001,size=4G \
  -p 5433:1433 \
  --name sql1 \
  -h sql1 \
  --d mcr.microsoft.com/mssql/server:2025-latest

Komut, oluşturulacak --tmpfs dosyaları için gerekli izinlerin doğru ayarlandığından emin olmak amacıyla boyutu 4 GB olarak ayarlar ve kullanıcı kimliği uid ile grup kimliği gid10001 olarak ayarlanır.

Kapsayıcı çalışır duruma geldikten sonra SSMS kullanarak SQL Server'a bağlanın ve aşağıdaki T-SQL komutlarıyla dosyaları yeni konuma tempdb taşıyın/var/opt/mssql/tempdb:

SELECT [name],
       physical_name
FROM sys.master_files
WHERE database_id = 2;

Gördüğünüz dosya sayısına bağlı olarak aşağıdaki komutu değiştirin. Bu örnekte dört tempdb dosya ve bir günlük dosyası vardır. Bu dosyaları yeni konumlarına taşımak için aşağıdaki komutları kullanın:

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf');
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf');
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev3, FILENAME = '/var/opt/mssql/tempdb/tempdb3.mdf');
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev4, FILENAME = '/var/opt/mssql/tempdb/tempdb4.mdf');
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
GO

Dosyaları taşıdıktan sonra aşağıdaki komutları kullanarak kapsayıcıyı durdurun ve yeniden başlatın

docker stop sql1
docker start sql1

Tmpfs üzerinde tüm veri ve günlük dosyalarıyla kapsayıcıların dağıtımı

Uyarı

Bu yapılandırma desteklenmez, ancak geliştirme amacıyla kullanılabilir. GitHub'da bu senaryo için geri bildirim sağlayabilirsiniz.

docker run -e ACCEPT_EULA=Y \
  -e MSSQL_SA_PASSWORD=<password> \
  --tmpfs /var/opt/mssql/data:uid=10001,gid=10001,size=4G \
  -p 5434:1433 \
  --name sql2 \
  -h sql2 \
  -d mcr.microsoft.com/mssql/server:2025-latest