Fungsi JetDefragment
Berlaku untuk: Windows | Windows Server
Fungsi JetDefragment
Fungsi JetDefragment memulai dan menghentikan tugas defragmentasi database yang meningkatkan organisasi data dalam database. Hal ini dilakukan untuk membatasi pertumbuhan database dengan menggunakan alokasi disk yang ada secara lebih efisien dalam database. Ini juga dapat mengurangi set kerja dengan memastikan bahwa data lebih dikemas dengan cermat. Terakhir, ini dapat meningkatkan performa aplikasi dengan mempercepat operasi umum melalui organisasi data yang lebih baik.
Defragmentasi database adalah operasi online dan tidak mengganggu aktivitas database reguler, seperti operasi kueri atau pembaruan data. JetDefragment juga tidak membuat salinan semua data yang ada. Sebaliknya, itu mendefragmentasi database di tempat. Terakhir, JetDefragment memulihkan ruang database internal untuk digunakan kembali tetapi tidak melepaskan ruang berlebih ke sistem file sistem operasi.
Format data yang dihasilkan bisa jauh lebih efisien tetapi umumnya tidak optimal. Defragmentasi terbatas untuk merilis halaman database untuk digunakan kembali yang berisi data yang telah dihapus secara logis. Defragmentasi juga membuat halaman database tersedia untuk digunakan kembali dalam beberapa kasus dengan menggabungkan data dari dua halaman ketika dapat pas pada satu halaman.
Operasi ini berbeda dari JetCompact yang membuat salinan database baca-saja ke dalam bentuk yang sangat optimal.
JET_ERR JET_API JetDefragment(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in JET_PCSTR szTableName,
__out_opt unsigned long* pcPasses,
__out_opt unsigned long* pcSeconds,
__in JET_GRBIT grbit
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
dbid
Database yang akan didefragmentasi.
szTableName
Parameter yang tidak digunakan. Defragmentasi dilakukan untuk seluruh database yang dijelaskan oleh ID database tertentu.
pcPasses
Saat memulai tugas defragmentasi online, parameter input ini menetapkan jumlah maksimum lolos defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output ini diatur ke jumlah pass yang dilakukan.
Ketika parameter ini diatur ke NULL, jumlah lolos defragmentasi online tidak terbatas.
pcSeconds
Saat memulai tugas defragmentasi online, parameter input ini mengatur waktu maksimum untuk defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output ini diatur ke lamanya waktu yang digunakan untuk defragmentasi.
Ketika parameter ini diatur ke NULL atau jika pcSeconds menunjuk ke nilai negatif, waktu maksimum untuk defragmentasi tidak terbatas.
grbit
Sekelompok bit yang menentukan nol atau beberapa opsi berikut.
Nilai |
Makna |
---|---|
JET_bitDefragmentAvailSpaceTreesOnly |
Defragmentasi bagian ruang yang tersedia dari alokasi ruang database ESE. Ruang database dibagi menjadi dua jenis, ruang yang dimiliki dan ruang yang tersedia. Ruang yang dimiliki dialokasikan ke tabel atau indeks sementara ruang yang tersedia siap digunakan dalam tabel atau indeks, masing-masing. Ruang yang tersedia jauh lebih dinamis dalam perilaku dan membutuhkan defragmentasi on-line lebih dari ruang atau tabel atau data indeks yang dimiliki. |
JET_bitDefragmentBatchStart |
Memulai tugas defragmentasi baru. |
JET_bitDefragmentBatchStop |
Menghentikan tugas defragmentasi. |
Tampilkan Nilai
Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan ESE, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.
Menampilkan kode |
Deskripsi |
---|---|
JET_errSuccess |
Operasi berhasil diselesaikan. |
JET_errClientRequestToStopJetService |
Tidak dimungkinkan untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService. |
JET_errDatabaseFileReadOnly |
Database yang dipilih untuk defragmentasi hanya baca dan tidak dapat diperbarui dengan cara apa pun, termasuk defragmentasi. |
JET_errDistributedTransactionAlreadyPreparedToCommit |
Sesi yang diberikan disiapkan untuk menerapkan status, dan tidak dapat memulai pembaruan baru sampai transaksi saat ini dilakukan atau digulung balik. |
JET_errInstanceUnavailable |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi telah mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errInvalidDatabaseId |
ID database yang diberikan tidak cocok dengan database yang diketahui dalam instans. |
JET_errNotInitialized |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi. |
JET_errRestoreInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi. |
JET_errSessionSharingViolation |
Sesi yang sama tidak dapat digunakan untuk lebih dari satu utas secara bersamaan. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errTermInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan. |
JET_errTransReadOnly |
Sesi yang diberikan hanya memiliki hak istimewa baca-saja dan tidak dapat memulai tugas yang dapat melakukan pembaruan, termasuk defragmentasi. |
JET_errVersionStoreOutOfMemory |
Kesalahan ini akan terjadi ketika ukuran penyimpanan versi yang dikonfigurasi tidak cukup untuk menahan semua pembaruan yang luar biasa. |
JET_wrnDefragAlreadyRunning |
Opsi JET_bitDefragmentBatchStart telah diteruskan tetapi tugas defragmentasi sudah menjalankan defragmentasi pada database yang diberikan. |
JET_wrnDefragNotRunning |
Opsi JET_bitDefragmentBatchStop telah diteruskan, tetapi tidak ada tugas defragmentasi yang saat ini berjalan. |
Jika berhasil, tindakan yang diminta untuk memulai tugas defragmentasi untuk data tertentu dengan opsi tertentu dilakukan, atau tindakan menghentikan tugas defragmentasi yang ada dilakukan.
Jika gagal, tindakan yang diminta untuk memulai atau menghentikan pekerjaan defragmentasi online tidak dilakukan. Tidak ada efek samping lain yang terjadi.
Keterangan
Defragmentasi online dikendalikan baik oleh pengaturan parameter, maupun oleh API ini. Nilai parameter sistem default adalah JET_OnlineDefragAll, yang berarti defragmentasi diaktifkan untuk semua struktur data yang didukung. Namun, menggunakan JetSetSystemParameter, dimungkinkan untuk menonaktifkan defragmentasi online, atau secara selektif mengaktifkannya hanya untuk pohon ruang database, database saja, file streaming saja atau kombinasi opsi ini. Jika pengaturan sistem untuk defragmentasi online diatur ke pengaturan usang, JetDefragment akan memperlakukan pengaturan sebagai JET_OnlineDefragAll.
Paling banyak ada satu tugas yang berjalan untuk setiap database. Tugas berjalan sebagai utas dalam proses hosting ESE.
Sesi yang digunakan untuk memulai tugas defragmentasi online kemudian dapat digunakan untuk operasi database sementara tugas defragmentasi berlanjut, karena tugas defragmentasi mengalokasikan sesinya sendiri. Sesi yang diberikan hanya digunakan untuk memeriksa izin yang terkait dengan sesi mulai tugas dan sebenarnya tidak digunakan untuk operasi defragmentasi itu sendiri.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien |
Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional. |
Server |
Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server. |
Header |
Dinyatakan dalam Esent.h. |
Pustaka |
Gunakan ESENT.lib. |
DLL |
Membutuhkan ESENT.dll. |
Unicode |
Diimplementasikan sebagai JetDefragmentW (Unicode) dan JetDefragmentA (ANSI). |
Lihat juga
JET_ERR
JET_SESID
JetCompact
JetDefragment2
JetSetSystemParameter
JetStopService
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk