Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengubah suai struktur jadual pangkalan data MySQL dalam talian

Bagaimana untuk mengubah suai struktur jadual pangkalan data MySQL dalam talian

WBOY
WBOYke hadapan
2022-09-05 17:45:282485semak imbas

Pembelajaran yang disyorkan: tutorial video mysql

1. Kunci metadata MDL

Sebelum mengubah suai struktur jadual , mari kita lihat dahulu masalah yang mungkin berlaku.

1. Apakah itu kunci MDL?

MySQL mempunyai kunci yang dipanggil kunci metadata MDL Apabila jadual diubah suai, kunci ini akan ditambahkan secara automatik pada jadual, iaitu, ia tidakkah Anda perlu menggunakannya secara eksplisit sendiri.

  • Apabila menambah, memadam, mengubah suai dan menanyakan jadual, kunci baca MDL ditambah
  • Apabila struktur jadual diubah suai, kunci tulis MDL ditambah

Membaca dan membaca tidak saling eksklusif, membaca dan menulis, menulis dan menulis adalah saling eksklusif, jadi

  • Apabila thread melakukan penambahan, pemadaman dan perubahan pada jadual, Akan menyekat yang lain permintaan threads untuk mengubah suai struktur jadual
  • Apabila thread mengubah suai struktur jadual, ia akan menyekat permintaan thread lain untuk menambah, memadam, mengubah suai dan menyemak jadual

2. Masalah kunci MDL

Dan sebaik sahaja MDL dikunci, ia hanya akan dikeluarkan selepas transaksi yang diminta pada masa ini diserahkan Jika ia adalah transaksi yang lama, atau terdapat sejumlah besar data dalam talian, jadual struktur akan diubah suai secara lalai Tanpa kunci tulis MDL, ia akan memakan masa dan menyekat permintaan seterusnya yang lain.

Bayangkan senario di mana A(pilih), B(ubah), C(pilih), D(pilih)... adalah permintaan kepada jadual MySQL yang sama dalam urutan.
Apabila A (pilih) memperoleh kunci baca MDL jadual, ia akan menyekat B (mengubah), kerana B perlu menambah kunci tulis MDL Selepas B disekat, ia akan menyebabkan orang lain dalam baris gilir menunggu . Semua permintaan disekat, akhirnya menyebabkan sambungan MySQL yang tersedia habis, meminta tamat masa dan masalah lain.

2. Cara mengubah suai struktur jadual MySQL dalam talian

Memandangkan kunci MDL di atas, kita tahu bahawa mengubah struktur jadual akan menyekat permintaan biasa yang lain, jadi operasi pengubahsuaian harus diletakkan di tempat tanpa henti Ia dilakukan pada waktu puncak perniagaan, biasanya antara 2 dan 4 pagi.

Langkah khusus:

  • Tambahkan kunci baca-tulis pada jadual, jadikan jadual baca sahaja pada masa ini,
  • Salin struktur fizikal jadual asal
  • Ubah suai struktur fizikal jadual baharu, termasuk menambah medan baharu atau mengubah suai struktur jadual lain
  • Import struktur jadual ke dalam jadual baharu, penyegerakan data selesai, kunci jadual perantaraan , padamkan jadual asal
  • Tambah nama semula jadual baharu ialah nama jadual asal
  • lepaskan kunci

Masalah dengan penyelesaian di atas ialah apabila jumlah daripada data adalah besar, ia mengambil masa untuk mengimport data Semasa proses ini, perkhidmatan tidak boleh diakses .

Penambahbaikan:

Cipta jadual baharu A_new, yang mempunyai lebih banyak medan daripada jadual asal Langgan jadual asal melalui langganan data data dalam jadual dalam talian A disegerakkan ke jadual A_new yang baru dibuat Proses ini akan diteruskan, dan jadual A boleh ditambah, dipadam, diubah suai dan disemak semasa proses ini akan sentiasa ada apabila data kedua-dua jadual disegerakkan sepenuhnya Ya, tiada perbezaan dalam data Pada masa ini, nama jadual asal A diubah suai, dan jadual baharu A_new diubah suai kepada jadual asal A. Operasi ini adalah operasi singkat dan boleh diselesaikan serta-merta. tanpa banyak impak.
Kebaikan dan keburukan:

  • Kelebihannya ialah proses penyegerakan tidak akan menjejaskan perniagaan biasa.
  • Kelemahannya ialah ruang storan tambahan diperlukan untuk menyimpan jadual baharu semasa proses selesai, jadual lama boleh dipadamkan.

Pembelajaran yang disyorkan: tutorial video mysql

Atas ialah kandungan terperinci Bagaimana untuk mengubah suai struktur jadual pangkalan data MySQL dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam