Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

ALTER TABLE tanpa mengunci meja?

Satu-satunya pilihan lain adalah melakukan secara manual apa yang dilakukan oleh banyak sistem RDBMS...
- Buat tabel baru

Anda kemudian dapat menyalin konten tabel lama di atas potongan sekaligus. Sementara selalu berhati-hati terhadap INSERT/UPDATE/DELETE pada tabel sumber. (Bisa diatur oleh pemicu. Meskipun ini akan menyebabkan perlambatan, itu bukan kunci...)

Setelah selesai, ubah nama tabel sumber, lalu ubah nama tabel baru. Lebih disukai dalam transaksi.

Setelah selesai, kompilasi ulang semua prosedur tersimpan, dll yang menggunakan tabel itu. Rencana eksekusi kemungkinan tidak akan valid lagi.

EDIT:

Beberapa komentar telah dibuat tentang batasan ini yang agak buruk. Jadi saya pikir saya akan memberikan perspektif baru untuk menunjukkan mengapa seperti itu...

  • Menambahkan bidang baru seperti mengubah satu bidang di setiap baris.
  • Field Locks akan jauh lebih sulit daripada Row locks, apalagi kunci tabel.

  • Anda benar-benar mengubah struktur fisik pada disk, setiap record bergerak.
  • Ini benar-benar seperti PEMBARUAN di seluruh tabel, tetapi dengan dampak yang lebih besar...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana merancang database film?

  2. Koneksi PHP gagal:SQLSTATE[HY000] [2002] Koneksi ditolak

  3. Mengapa MySQL COUNT tanpa nama tabel memberi 1

  4. Kinerja sisipan batch JDBC

  5. Setel Ulang Kata Sandi Root MySQL di Windows