Fungsi JetDefragment2
Berlaku untuk: Windows | Windows Server
Fungsi JetDefragment2
Fungsi JetDefragment2 memulai dan menghentikan tugas defragmentasi database yang meningkatkan organisasi data dalam database, dengan parameter panggilan balik yang tersedia untuk melaporkan kemajuan defragmentasi. 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.
Windows XP:JetDefragment2 diperkenalkan di Windows XP.
JetDefragment2 juga berisi parameter fungsi panggilan balik yang digunakan untuk melaporkan kemajuan proses defragmentasi.
Defragmentasi database adalah operasi online dan tidak mengganggu aktivitas database reguler seperti operasi kueri atau pembaruan data. JetDefragment2 juga tidak membuat salinan semua data yang ada. Sebaliknya, itu mendefragmentasi database di tempat. Terakhir, JetDefragment2 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 JetDefragment2(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in JET_PCSTR szTableName,
__out_opt unsigned long* pcPasses,
__out_opt unsigned long* pcSeconds,
__in JET_CALLBACK callback,
__in JET_GRBIT grbit
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
dbid
Database yang akan didefragmentasi.
szTableName
Terkadang szTableName diperlukan, dan terkadang dilarang:
grbit | szTableName |
---|---|
JET_bitDefragmentBTreeBatch |
Harus berupa NULL . |
JET_bitDefragmentBTree |
Menentukan nama tabel/BTree yang akan didefragmentasi. |
Lain | Harus berupa NULL . |
Defragmentasi dilakukan untuk seluruh database yang dijelaskan oleh ID database tertentu.
pcPasses
Saat memulai tugas defragmentasi online, parameter input opsional ini menetapkan jumlah maksimum lolos defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output opsional 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 opsional ini mengatur waktu maksimum untuk defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output opsional 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.
Callback
Fungsi panggilan balik yang dipanggil defragmentasi secara teratur untuk melaporkan kemajuan.
grbit | szTableName |
---|---|
JET_bitDefragmentBTreeBatch |
Harus berupa NULL . |
JET_bitDefragmentBTree |
Harus berupa NULL . |
Lain | Pilihan. |
grbit
Sekelompok bit yang menentukan nol atau beberapa opsi berikut.
Nilai |
Makna |
---|---|
JET_bitDefragmentAvailSpaceTreesOnly |
Opsi ini digunakan untuk mendefragmentasi 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 online lebih dari ruang atau tabel atau data indeks yang dimiliki. |
JET_bitDefragmentBatchStart |
Opsi ini digunakan untuk memulai tugas defragmentasi baru. |
JET_bitDefragmentBatchStop |
Opsi ini digunakan untuk menghentikan tugas defragmentasi mulai yang ada. |
JET_bitDefragmentBTree |
Opsi ini digunakan untuk men-defrag B-Tree, yang ditentukan oleh szTableName. |
JET_bitDefragmentBTreeBatch |
Opsi ini digunakan untuk memanggil OLD2 di seluruh database. |
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 on-line adalah ke pengaturan usang, JetDefragment2 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 atau Windows XP. |
Server |
Memerlukan Windows Server 2008 atau Windows Server 2003. |
Header |
Dinyatakan dalam Esent.h. |
Pustaka |
Gunakan ESENT.lib. |
DLL |
Membutuhkan ESENT.dll. |
Unicode |
Diimplementasikan sebagai JetDefragment2W (Unicode) dan JetDefragment2A (ANSI). |
Lihat juga
JET_ERR
JET_SESID
JetCompact
JetDefragment
JetSetSystemParameter
JetStopService