Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Penguncian Optimis vs. Pesimis

Penguncian Optimis adalah strategi di mana Anda membaca catatan, mencatat nomor versi (metode lain untuk melakukan ini melibatkan tanggal, stempel waktu atau checksum/hash) dan memeriksa apakah versi tidak berubah sebelum Anda menulis catatan kembali. Saat Anda menulis kembali catatan, Anda memfilter pembaruan pada versi untuk memastikan itu atomik. (yaitu belum diperbarui antara saat Anda memeriksa versi dan menulis catatan ke disk) dan memperbarui versi dalam satu klik.

Jika catatan kotor (yaitu versi yang berbeda dengan milik Anda), Anda membatalkan transaksi dan pengguna dapat memulainya kembali.

Strategi ini paling berlaku untuk sistem volume tinggi dan arsitektur tiga tingkat di mana Anda tidak perlu memelihara koneksi ke database untuk sesi Anda. Dalam situasi ini, klien tidak dapat benar-benar memelihara kunci basis data karena koneksi diambil dari kumpulan dan Anda mungkin tidak menggunakan koneksi yang sama dari satu akses ke akses berikutnya.

Penguncian Pesimistis adalah saat Anda mengunci rekaman untuk penggunaan eksklusif Anda sampai Anda selesai menggunakannya. Ini memiliki integritas yang jauh lebih baik daripada penguncian optimis tetapi mengharuskan Anda untuk berhati-hati dengan desain aplikasi Anda untuk menghindari Deadlock. Untuk menggunakan penguncian pesimistis, Anda memerlukan koneksi langsung ke database (seperti yang biasanya terjadi pada aplikasi server klien dua tingkat) atau ID transaksi yang tersedia secara eksternal yang dapat digunakan secara independen dari koneksi.

Dalam kasus terakhir, Anda membuka transaksi dengan TxID dan kemudian menghubungkan kembali menggunakan ID itu. DBMS memelihara kunci dan memungkinkan Anda untuk memilih sesi kembali melalui TxID. Beginilah cara kerja transaksi terdistribusi menggunakan protokol komit dua fase (seperti Transaksi XA atau COM+).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengonversi tanggal secara efektif antara waktu UTC dan Lokal (mis. PST) di SQL 2005

  2. SQL Server Setara dengan GROUP_CONCAT()

  3. Contoh Mengonversi 'tanggal' menjadi 'waktu-waktu' di SQL Server (T-SQL)

  4. Bagaimana ISNUMERIC() Bekerja di SQL Server

  5. Kesalahan SQL Server 110:Ada lebih sedikit kolom dalam pernyataan INSERT daripada nilai yang ditentukan dalam klausa VALUES.