Fungsi JetDefragment

Berlaku untuk: Windows | server Windows

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, ini mendefragasi 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 yang diberikan.

pcPasses

Saat memulai tugas defragmentasi online, parameter input ini menetapkan jumlah maksimum lulus defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output ini diatur ke jumlah pass yang dilakukan.

Ketika parameter ini diatur ke NULL, jumlah lulus 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

Mendefragasi 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 saat ruang yang tersedia siap digunakan dalam tabel atau indeks. Ruang yang tersedia jauh lebih dinamis dalam perilaku dan membutuhkan defragmentasi on-line lebih daripada 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 Parameter Kesalahan mesin Storage yang Dapat Diperluas dan Penanganan Kesalahan.

Mengembalikan kode

Deskripsi

JET_errSuccess

Operasi berhasil diselesaikan.

JET_errClientRequestToStopJetService

Tidak mungkin 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 dalam keadaan siap untuk menerapkan, dan tidak dapat memulai pembaruan baru sampai transaksi saat ini diterapkan 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 dilewati tetapi tugas defragmentasi sudah menjalankan defragmentasi pada database yang diberikan.

JET_wrnDefragNotRunning

Opsi JET_bitDefragmentBatchStop telah dilewati, tetapi tidak ada tugas defragmentasi yang saat ini berjalan.

Setelah 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 untuk mengaktifkannya secara selektif 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

Membutuhkan Windows Vista, Windows XP, atau Windows 2000 Professional.

Server

Memerlukan Windows Server 2008, Windows Server 2003, atau server Windows 2000.

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