Bagikan melalui


Mengaktifkan dan menjalankan tempdb pada tmpfs untuk SQL Server 2025 di Linux

Berlaku untuk: SQL Server 2025 (17.x) - Linux

Artikel ini memandu Anda untuk mengaktifkan dan menjalankan tempdb file database pada sistem file tmpfs di SQL Server 2025 (17.x).

SQL Server di Linux dan kontainer secara tradisional mendukung sistem file XFS dan ext4 untuk menyebarkan file dan log database SQL Server. Namun, untuk database sementara seperti tempdb, yang tidak mengharuskan data disimpan dari satu periode waktu aktif ke periode berikutnya, menggunakan sistem file tmpfs yang memanfaatkan memori (RAM) dapat meningkatkan performa keseluruhan untuk beban kerja berbasis tempdb.

Untuk informasi selengkapnya tentang sistem file tmpfs , lihat tmpfs - Dokumentasi Kernel Linux.

Konfigurasi Deskripsi
Konfigurasi yang didukung tmpfs ideal untuk menyimpan data non-persisten yang tidak perlu disimpan setelah restart. Saat ini hanya file-file database yang didukung pada sistem berkas tmpfs untuk penyebaran berbasis kontainer dan non-kontainer.
Konfigurasi yang tidak didukung sistem file tmpfs dapat digunakan untuk database pengguna dalam penyebaran kontainer SQL, tetapi hanya untuk tujuan pengembangan. Namun, konfigurasi ini tidak didukung. Anda dapat memberikan umpan balik untuk skenario ini di GitHub.

Penyebaran komputer fisik atau virtual

Untuk mengaktifkan dukungan tmpfs untuk SQL Server di Linux pada komputer fisik atau virtual, Anda perlu memasang sistem file tmpfs dengan benar, yang memerlukan akses sudo. Setelah poin mount disiapkan, Anda dapat menempatkan tempdb file pada poin mount ini dan memulai SQL Server dengan memasang file tempdb pada sistem file tmpfs.

Aktifkan tmpfs untuk tempdb

  1. Buat direktori tempdb.

    mkdir Gunakan perintah untuk membuat direktori untuk tempdb database. Pastikan bahwa mssql dimiliki oleh pengguna dan grup untuk memungkinkan akses bagi SQL Server:

    mkdir /var/opt/mssql/tempdb
    sudo chown mssql. /var/opt/mssql/tempdb
    
  2. Pasang sistem file tmpfs.

    Gunakan perintah berikut untuk memasang sistem file tmpfs :

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

    Opsi -t menentukan jenis sistem file, yang dalam hal ini adalah tmpfs.

    Opsi -o memungkinkan Anda menentukan opsi pemasangan. Di sini, size=4G mengatur ukuran maksimum tmpfs menjadi 4 GB, yang berarti dapat menggunakan RAM hingga 4 GB.

    Perintah ini memasang tmpfs ke direktori target yang digunakan oleh database SQL Server tempdb .

    Secara opsional, tambahkan ke fstab untuk mempertahankan pemasangan di seluruh restart.

    echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
    
  3. Perbarui tempdb lokasi file.

    Pastikan SQL Server aktif dan berjalan. Sambungkan ke instans SQL Server Anda menggunakan SQL Server Management Studio (SSMS) dan jalankan perintah T-SQL berikut.

    Identifikasi semua tempdb file menggunakan skrip T-SQL berikut, lalu jalankan perintah ALTER DATABASE untuk memperbarui file lokasi tempdb.

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

    Berdasarkan jumlah file yang Anda lihat untuk tempdb, Anda membuat ALTER DATABASE perintah sebagai berikut:

    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. Mulai ulang SQL Server untuk menerapkan perubahan.

    sudo systemctl restart mssql-server
    
  5. Periksa lokasi file tempdb.

    Setelah SQL Server aktif dan berjalan, verifikasi bahwa tempdb data dan file log sekarang terletak di direktori baru, dengan menyambungkan ke SQL Server menggunakan alat seperti SQL Server Management Studio (SSMS).

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

Anda sekarang akan melihat semua tempdb file database pada jalur pemasangan baru yaitu /var/opt/mssql/tempdb.

Mengubah ukuran pemasangan tmpfs dengan panas

Anda juga dapat melakukan penyesuaian ukuran tmpfs secara langsung jika tempdb sudah penuh. Untuk melakukan resize secara langsung, jalankan perintah berikut untuk mengubah ukuran mount tmpfs menjadi 6 GB.

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

Secara opsional, buat ukuran baru tetap berlaku di seluruh mulai ulang dengan memodifikasi entri fstab.

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

Penyebaran kontainer

Untuk beban kerja pengembang, tmpf dapat digunakan untuk database pengguna. sistem file tmpfs dapat mempercepat kasus pengujian secara signifikan untuk database pengguna yang disebarkan dalam kontainer. Karena tmpfs menggunakan RAM alih-alih penyimpanan disk, tmpfs memungkinkan operasi baca/tulis yang cepat. Konfigurasi ini berguna dalam lingkungan pengembangan dan pengujian di mana perulangan cepat diperlukan.

Namun, tmpfs untuk database pengguna tidak didukung. Anda dapat memberikan umpan balik terkait database pengguna di tmpfs di GitHub.

Jalankan tempdb database saja pada sistem file tmpfs

Jika Anda menyebarkan kontainer SQL Server dan ingin memastikan bahwa kontainer menggunakan tmpfs untuk tempdb, Anda dapat menjalankan perintah berikut:

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

Perintah --tmpfs mengatur ukuran menjadi 4 GB dan mengatur uid (ID pengguna) serta gid (ID grup) menjadi 10001 guna memastikan bahwa izin yang diperlukan diatur dengan benar sehingga file tempdb dapat dibuat.

Setelah kontainer aktif dan berjalan, sambungkan ke SQL Server menggunakan SQL Server dan pindahkan tempdb file ke lokasi /var/opt/mssql/tempdb baru dengan perintah T-SQL berikut:

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

Berdasarkan jumlah file yang Anda lihat, ubah perintah berikut. Dalam contoh ini, ada empat tempdb file dan satu file log. Gunakan perintah berikut untuk memindahkan file-file ini ke lokasi barunya:

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

Setelah memindahkan file, hentikan dan mulai ulang kontainer menggunakan perintah berikut

docker stop sql1
docker start sql1

Menyebarkan kontainer dengan semua data dan file log di tmpfs

Peringatan

Konfigurasi ini tidak didukung, tetapi dapat digunakan untuk tujuan pengembangan. Anda dapat memberikan umpan balik untuk skenario ini di GitHub.

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