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 Description
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.

    sudo mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. tmpfs dosya sistemini takı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 (SSMS) ile SQL Server örneğinize bağlanın ve aşağıdaki Transact-SQL (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. Dosya konumlarını doğrulayın tempdb .

    SQL Server çalıştığında, SSMS gibi bir araçla SQL Server'a bağlanarak veri ve günlük dosyalarının artık yeni dizinde bulunduğunu doğrulayıntempdb.

    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:

sudo 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.

Sadece tempdb veritabanını tmpfs dosya sisteminde barındırın

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

--tmpfs seçeneği, boyutu 4 GB olarak ve tempdb’i (kullanıcı kimliği) ile uid’yi (grup kimliği) gid olarak ayarlayarak, 10001 dosyalarının oluşturulabilmesi için gerekli izinlerin doğru şekilde ayarlanmasını sağlar.

Konteyner çalışır duruma geldikten sonra, SSMS kullanarak SQL Server örneğine bağlanın ve aşağıdaki T-SQL komutlarını kullanarak /var/opt/mssql/tempdb dosya konumlarını tempdb olarak güncelleyin:

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 veri dosyası ve bir günlük dosyası vardır. Dosya konumlarını güncellemek 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

Dosya konumlarını güncelledikten sonra, aşağıdaki komutlarla konteyneri durdurup 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ı

Warning

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