Catatan: posting ini mungkin berguna juga:
Masalah dengan file mdf TempDB semakin meningkat
Kecuali Anda dapat mengetahui proses apa yang menggunakan tabel kerja itu (dan dapat dengan aman membunuhnya), saya harus setuju dengan apa yang sudah dihasilkan oleh pencarian Anda: siklus server dan Anda harus dapat mengecilkan tempdb.
Sebuah pertanyaan berbeda telah berurusan dengan mencari tahu ini untuk tabel #temp; Saya tidak tahu apakah itu bisa disesuaikan untuk tabel kerja:
Temukan sesi mana yang memegang tabel sementara mana
Saya juga membuat blog tentang hal itu (sekali lagi, untuk tabel #temp):
http://sqlperformance.com/2014/05/t-sql-queries/dude-who-owns-that-temp-table
Saya ragu meja kerja terkait dengan snapshot isolasi / versi store, tetapi untuk berjaga-jaga:
Temukan transaksi yang mengisi toko versi
Juga, jangan mengandalkan DBCC OPENTRAN;
- Saya telah mengamati banyak skenario di mana saya tahu saya memiliki transaksi aktif tetapi tidak muncul di sana. Dan perhatikan bahwa konteks basis data penting; database tempat transaksi aktif belum tentu tempdb. apa yang kamu lihat di sini? Apa pun?
SELECT * FROM sys.dm_tran_active_transactions
WHERE name = N'worktable';
Setelah Anda menyusutkan tempdb
Tentu saja, ini bukan solusi permanen. Anda akan menyusutkan tempdb, dan kemudian akan tumbuh lagi. Ini bisa menjadi sangat membosankan dan membosankan untuk memainkan game ini setiap kali itu terjadi. Dan jika itu akan tumbuh lagi, apa yang akan Anda lakukan dengan ruang kosong itu sementara itu? Sewa keluar dan kemudian mengusir orang ketika tempdb membutuhkannya lagi? Anda perlu:
- Perbaiki proses yang membuat tempdb tumbuh abnormal besar di tempat pertama.
- Alokasikan cukup ruang untuk tempdb sehingga tidak perlu tumbuh, dan berhenti menyusut (terutama jika hanya sementara; ini hanya pekerjaan sia-sia!).
Beberapa saran lain:
- Jangan gunakan
SHRINKDATABASE
(yang seharusnya disebut auto-fragment) atau UI. Tulis SHRINKFILE
perintah spesifik yang ditargetkan untuk memengaruhi file individual.
- Pertimbangkan untuk menggunakan banyak file untuk tempdb (yang dapat Anda sebarkan ke penyimpanan yang berbeda jika / bila memungkinkan), dan pertimbangkan untuk melacak flag 1117 (selama perilaku ini tidak akan memengaruhi basis data pengguna Anda juga) dan 1118.
- Beberapa tips untuk meminimalkan pemanfaatan tempdb di sini:
Tidak, ini solusi sementara. Saya kira Anda memposting pertanyaan yang sama sebelum bisa tolong katakan berapa ukuran total database yang Anda miliki dalam contoh SQL Server Anda. Ukuran tempdb tergantung pada seberapa banyak permintaan Anda menggunakannya. Itu tidak bisa tumbuh dengan sendirinya kecuali Anda menggunakannya. Tautan yang dibagikan oleh Aron akan membantu tetapi Anda harus menyetel kueri jika mereka banyak menggunakan temdbb atau mungkin merupakan persyaratan standar lingkungan Anda. Saya telah melihat beberapa env. di mana 200 G tempdb dapat diterima karena permintaan membutuhkan banyak ruang tempdb.
sumber