


Bagaimana untuk mengubah meja besar tanpa menguncinya (DDL dalam talian)?
Jun 14, 2025 am 12:36 AMUntuk mengubah jadual pengeluaran yang besar tanpa kunci panjang, gunakan teknik DDL dalam talian. 1) Kenal pasti jika operasi mengubah anda cepat (contohnya, menambah/menjatuhkan lajur, mengubah suai null/not null) atau perlahan (misalnya, perubahan jenis data, menyusun semula lajur, menambah indeks pada data besar). 2) Gunakan ciri-ciri khusus pangkalan data: Dalam MySQL, gunakan algoritma = inplace dan kunci = tiada; Dalam PostgreSQL, gunakan Buat Indeks serentak untuk penciptaan indeks yang tidak menyekat. 3) Untuk perubahan yang tidak disokong, gunakan alat pihak ketiga seperti PT-Online-Schema-Change yang mencipta jadual bayangan, menyalin data dalam ketulan, dan menukar jadual dengan penguncian minimum. 4) Memastikan ruang cakera yang mencukupi, menguji pementasan, dan mengelakkan konflik dengan replikasi atau pencetus. 5) Rancang di sekitar tingkah laku aplikasi dengan penjadualan semasa trafik yang rendah, pemantauan prestasi, dan menggunakan bendera ciri untuk mengendalikan peralihan skema dengan lancar.
Apabila anda perlu mengubah jadual besar dalam pangkalan data pengeluaran, perkara terakhir yang anda mahukan ialah menguncinya untuk tempoh yang panjang. Blok mengunci membaca dan menulis, yang membawa kepada masalah downtime atau prestasi. Penyelesaiannya? DDL dalam talian - Membuat perubahan tanpa mengunci jadual untuk jangka masa yang panjang. Inilah cara anda boleh melakukannya dengan berkesan.
Fahami apa yang menjadikan operasi beroperasi menghalang
Tidak semua operasi ALTER TABLE
adalah sama. Sesetengahnya adalah perubahan metadata sahaja, sementara yang lain memerlukan membina semula seluruh jadual.
- Operasi pantas (tidak menyekat atau menyekat minimum) termasuk:
- Menambah/menjatuhkan lajur pada akhir
- Mengubahsuai lajur null/tidak batal
- Menamakan semula lajur atau indeks
- Operasi perlahan (sering menyekat) termasuk:
- Menukar Jenis Data Lajur
- Menyusun semula lajur
- Menambah indeks pada dataset yang besar
Jika operasi anda jatuh ke dalam kategori perlahan, anda perlu menggunakan alat atau teknik yang membolehkan anda memohon perubahan skema dalam talian.
Gunakan ciri-ciri DDL dalam talian khusus pangkalan data
Pangkalan data moden mempunyai sokongan terbina dalam DDL dalam talian, terutamanya jika anda menggunakan MySQL atau PostgreSQL.
Di MySQL (5.6 dengan InnoDB):
Gunakan ALGORITHM=INPLACE
dan LOCK=NONE
yang mungkin:
Alter Jadual Pengguna Tambahkan Lajur New_Col Varchar (255), Algoritma = inplace, lock = none;
- Semak sama ada perubahan khusus anda menyokong pilihan ini.
- Jika
ALGORITHM=INPLACE
tidak disokong, anda memerlukan alat pihak ketiga.
Dalam PostgreSQL:
Sebilangan besar perintah ALTER TABLE
sudah tidak menyekat secara lalai, tetapi menambah indeks boleh dilakukan secara serentak:
Buat indeks serentak idx_users_email pada pengguna (e -mel);
Ini mengelakkan mengunci jadual semasa penciptaan indeks.
Gunakan alat pihak ketiga untuk perubahan yang kompleks
Apabila sokongan asli tidak mencukupi, alat seperti PT-Online-Schema-Change (untuk MySQL) atau Liquibase / Flyway dengan strategi tersuai dapat membantu.
PT-Online-Schema-Change (contoh MySQL):
pt-online-schema-change --Alter "Tambah lajur aktif boolean" d = mydb, t = pengguna-execute
Bagaimana ia berfungsi:
- Membuat salinan bayangan meja
- Menggunakan perubahan pada salinan
- Menyalin data dalam ketulan
- Swap jadual apabila siap
- Mengelakkan kunci panjang dan mengekalkan ketersediaan
Pastikan:
- Anda mempunyai ruang cakera yang mencukupi
- Pencetus atau replikasi tidak akan menimbulkan masalah
- Anda mengujinya dalam pementasan terlebih dahulu
Rancang tingkah laku permohonan
Walaupun dengan DDL dalam talian, terdapat kes kelebihan:
- Urus niaga jangka panjang mungkin bertentangan dengan perubahan skema
- Lag replikasi boleh berlaku semasa perubahan besar
- Kod permohonan harus bertolak ansur dengan skema lama dan baru buat sementara waktu
Beberapa petua:
- Jadualkan perubahan semasa tempoh trafik yang rendah jika boleh
- Pantau replikasi dan prestasi pertanyaan semasa perubahan
- Pertimbangkan bendera ciri atau API versi untuk mengendalikan peralihan skema dengan lancar
Itu pada dasarnya. Mengubah jadual besar tanpa mengunci mereka datang untuk memahami keupayaan pangkalan data anda, menggunakan alat yang betul, dan merancang sekitar tingkah laku aplikasi dunia nyata. Ia bukan sihir, hanya pelaksanaan yang berhati -hati.
Atas ialah kandungan terperinci Bagaimana untuk mengubah meja besar tanpa menguncinya (DDL dalam talian)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Failover Perpustakaan Utama MySQL terutamanya termasuk empat langkah. 1. Pengesanan kesalahan: Secara kerap memeriksa proses perpustakaan utama, status sambungan dan pertanyaan mudah untuk menentukan sama ada ia adalah downtime, menyediakan mekanisme semula untuk mengelakkan salah laku, dan boleh menggunakan alat seperti MHA, Orchestrator atau yang disimpan untuk membantu dalam pengesanan; 2. Pilih Perpustakaan Utama Baru: Pilih Perpustakaan Hamba yang paling sesuai untuk menggantikannya mengikut Kemajuan Penyegerakan Data (SecondS_Behind_Master), integriti data binLog, kelewatan rangkaian dan keadaan beban, dan melakukan pampasan data atau campur tangan manual jika perlu; 3. Tukar Topologi: Titik perpustakaan hamba lain ke perpustakaan induk baru, laksanakan semula semula atau aktifkan GTID, kemas kini konfigurasi VIP, DNS atau proksi ke

Langkah-langkah untuk menyambung ke pangkalan data MySQL adalah seperti berikut: 1. Gunakan format perintah asas MySQL-U Username-P-H alamat host untuk menyambung, masukkan nama pengguna dan kata laluan untuk log masuk; 2. Jika anda perlu memasukkan pangkalan data yang ditentukan secara langsung, anda boleh menambah nama pangkalan data selepas arahan, seperti MySQL-Uroot-PmyProject; 3 Jika port bukan lalai 3306, anda perlu menambah parameter -P untuk menentukan nombor port, seperti MySQL-UROOT-P-H192.168.1.100-P3307; Di samping itu, jika anda menghadapi ralat kata laluan, anda boleh memasukkannya semula. Jika sambungan gagal, periksa rangkaian, firewall atau tetapan kebenaran. Jika pelanggan hilang, anda boleh memasang MySQL-Client di Linux melalui Pengurus Pakej. Menguasai arahan ini

Indexesinmysqlimprovequeryspeedbyenablingfasterdataretrieval.1.theyreducedAtascanned, membolehkanmysqltoquicklylocaterelevantrowsinwhereororderbyclauses, terutama sekalimortantforlargeorfrequeriedTables.2.theyspeedupjoinSoSdoSoBes.2

Tahap pengasingan urus niaga mysql adalah berulang, yang menghalang bacaan kotor dan bacaan yang tidak boleh dikembalikan melalui kunci MVCC dan GAP, dan mengelakkan bacaan hantu dalam kebanyakan kes; Tahap utama yang lain termasuk bacaan yang tidak komited (readuncommitted), yang membolehkan bacaan kotor tetapi prestasi terpantas, 1. memastikan integriti data tetapi mengorbankan prestasi;

Untuk membersihkan fail MySQL Binlog, anda harus menggunakan arahan PurgebinaryLogs atau menetapkan masa tamat tempoh automatik, dan fail tidak boleh dipadamkan secara langsung. 1. Gunakan perintah pembersihan untuk membersihkan log lama dengan nama fail atau masa. Sebelum pelaksanaan, anda perlu mengesahkan bahawa perpustakaan hamba tidak lagi menggunakan log yang berkaitan; 2. Semak status log semasa dan lokasi perpustakaan hamba melalui Showmasterstatus dan Showlavestatus untuk memastikan keselamatan julat pembersihan; 3. Adalah disyorkan untuk menetapkan parameter binlog_expire_logs_seconds untuk mencapai pembersihan automatik, yang sesuai untuk persekitaran operasi jangka panjang; 4. Menghapus fail secara langsung akan menyebabkan masalah yang serius seperti kegagalan penyegerakan master-hamba dan maklumat log yang tidak konsisten, dan mesti dielakkan.

Untuk menambah direktori bin MySQL ke laluan sistem, ia perlu dikonfigurasikan mengikut sistem operasi yang berbeza. 1. Sistem Windows: Cari folder bin dalam direktori pemasangan MySQL (laluan lalai biasanya c: \ programfiles \ mysql \ mysqlserverx.x \ bin), klik kanan "Komputer ini" → "sifat" → "Tetapan Sistem Lanjutan" → " MySQL-Pengesahan versi; 2.Macos dan Sistem Linux: Pengguna Bash Edit ~/.bashrc atau ~/.bash_

Langkah-langkah utama untuk memasang MySQL pada Windows 11 adalah seperti berikut: 1. Muat turun versi yang betul, pilih pakej pemasangan Windows MSI dan pastikan sistem itu 64-bit; 2. Pilih mod "Custom" semasa pemasangan, tambahkan MySQLServer dan tetapkan laluan pemasangan yang sesuai; 3. Jalankan wizard konfigurasi, pilih jenis konfigurasi "Servercomputer", tetapkan kata laluan root, dan pilih kaedah permulaan automatik; 4. Selepas pemasangan ujian berjaya, jika arahan segera tidak tersedia, tambahkan direktori MySQL Bin ke pemboleh ubah persekitaran sistem. Ikuti langkah -langkah ini untuk menyelesaikan pemasangan dan konfigurasi dengan lancar.

Untuk menetapkan semula kata laluan root MySQL, sila ikuti langkah -langkah berikut: 1. Hentikan pelayan MySQL, gunakan sudosystemctlstopmysql atau sudosystemctlstopmysqld; 2. Mulakan MySQL In-Skip-Grant-Tables Mode, laksanakan sudomysqld-skip-gergaji meja &; 3. Log masuk ke MySQL dan laksanakan perintah SQL yang sepadan untuk mengubah suai kata laluan mengikut versi, seperti flushprivileges; alteruser'root '@' localhost'identifiedby'your_new
