Balik semula MySQL (perkongsian ringkasan)
Artikel ini membawakan anda pengetahuan yang berkaitan tentang mysql terutamanya menganjurkan isu berkaitan rollback dan terutamanya memperkenalkan mekanisme rollback dan rollback kedai buku Mari kita lihat bersama-sama.
Pembelajaran yang disyorkan: tutorial video mysql
Saya sering menghadapi pengendalian meja besar dan mendapati masa operasi terlalu lama atau menjejaskan proses dalam talian Perniagaan perlu melancarkan operasi meja besar. Selepas menghentikan operasi jadual yang besar, menunggu rollback adalah proses yang sangat lama Walaupun anda mungkin tahu beberapa kaedah untuk memendekkan masa dan kagum dengan integriti data dalam persekitaran pengeluaran, anda boleh memilih untuk tidak campur tangan.
Pemulihan urus niaga
Urus niaga ialah unit pelaksanaan dalam pangkalan data hubungan dan anda boleh memilih untuk melakukan atau melancarkan semula melalui kawalan peringkat akhir. Lakukan operasi rollback dalam pelbagai senario di mana integriti tidak dapat dijamin. Rollback dalam MySQL dicapai melalui log Undo, yang mengandungi maklumat tentang cara untuk membuat asal perubahan terkini yang berkaitan dengan transaksi. Buat asal log wujud dalam segmen Buat asal log dan segmen Buat asal log disertakan dalam segmen tarik balik. Segmen rollback terletak di ruang jadual asal dan ruang jadual Sementara global.
Hubungannya adalah seperti berikut:
- buat asal fail
mysql > show variables like '%undo%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | innodb_max_undo_log_size | 1073741824 | | innodb_undo_directory | /opt/data8.0/mysql | | innodb_undo_log_encrypt | OFF | | innodb_undo_log_truncate | ON | | innodb_undo_tablespaces | 2 | +--------------------------+--------------------+ 5 rows in set (0.00 sec)
Global Temporary Merujuk kepada ruang jadual sementara (ibtmp1) yang digunakan untuk menyimpan segmen rollback untuk perubahan yang dibuat pada jadual sementara ciptaan pengguna.
mysql > SELECT @@innodb_temp_data_file_path; +-------------------------------+ | @@innodb_temp_data_file_path | +-------------------------------+ | ibtmp1:128M:autoextend:max:30G | +-------------------------------+
Selepas memahami fail yang disertakan dalam rollback, teruskan membaca.
Mekanisme pusing balik:
Kawalan balik balik MySQL diselaraskan oleh enjin innodb dalaman dan tidak menyediakan mekanisme kawalan manusia. Parameter rollback MySQL yang disediakan pada masa ini adalah seperti berikut:
mysql> SHOW VARIABLES LIKE '%ROLL%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | innodb_rollback_on_timeout | OFF | | innodb_rollback_segments | 128 | +----------------------------+-------+
innodb_rollback_on_timeout:
InnoDB lalai untuk melancarkan penyata terakhir hanya apabila transaksi tamat. Jika --InnoDB -rollback-on-timeout ditentukan, tamat masa transaksi akan menyebabkan InnoDB membatalkan dan melancarkan keseluruhan transaksi. Ia dimatikan secara lalai, sebaik sahaja masa yang ditetapkan, seperti pemulangan gagal. Adalah boleh dibayangkan bahawa akan ada ketidakkonsistenan dalam data. Kaedah ini tidak digalakkan.
Innodb_rollback_segments (1~128):
mentakrifkan bilangan segmen rollback yang diperuntukkan kepada setiap ruang jadual buat asal dan bilangan ruang jadual sementara global yang diperuntukkan untuk transaksi yang menjana rekod buat asal .
Bilangan transaksi yang disokong oleh segmen rollback: bergantung pada bilangan slot buat asal dalam segmen rollback dan bilangan log buat asal yang diperlukan untuk setiap transaksi
Bilangan slot buat asal dalam rollback yang disediakan secara rasmi segmen adalah berdasarkan saiz halaman InnoDB yang berkaitan:
Daripada pelaksanaan kod sumber MySQL8.0.27 terkini, storageinnobaseincludetrx0rseg.h:
/* Number of undo log slots in a rollback segment file copy 这里 UNIV_PAGE_SIZE正常页面的大小 即 1024*/ #define TRX_RSEG_N_SLOTS (UNIV_PAGE_SIZE / 16) /* Maximum number of transactions supported by a single rollback segment 单个回滚段支持的最大事务数1024/2=512 */ #define TRX_RSEG_MAX_N_TRXS (TRX_RSEG_N_SLOTS / 2)
dibahagikan kepada halaman secara lalai Terdapat 1024 slot (TRX_RSEG_N_SLOTS), dan setiap slot sepadan dengan objek log batal, jadi secara teorinya InnoDB boleh menyokong 128 * 512 = 65536 transaksi biasa.
Untuk bahagian prinsip, sila rujuk MySQL · Ciri Enjin · InnoDB batalkan perayauan log
Secara rasmi menyediakan undbo rollback senario baca dan tulis serentak:
Kembali dari prinsip rayuan Dalam senario aplikasi sebenar:
Keupayaan untuk menyokong segmen rollback masih besar, tetapi selalunya sangat perlahan apabila melaksanakan kumpulan rollback yang besar. Terutama semasa pemprosesan dalam talian, ia mungkin mengambil masa 10 minit untuk melancarkan 100,000 baris. Atau lebih lama lagi.
Seterusnya, sediakan 50 juta data jadual tunggal melalui sysbench Tanpa beban, padamkannya selama kira-kira 1 minit Kemudian gunakan kill -9 untuk menghentikan transaksi secara paksa dan melancarkan transaksi:
.
Jelas sekali kesan mulakan semula adalah lebih baik.
Walau bagaimanapun, kaedah kill -9 boleh merosakkan halaman data dengan mudah dan menimbulkan risiko yang besar. Pangkalan data juga di bawah beban dalam kehidupan seharian Ia boleh dibayangkan bahawa kos melancarkan transaksi besar adalah sangat tinggi.
Ringkasan
Operasi rollback yang besar harus dielakkan sebanyak mungkin, yang menggunakan sumber dan prestasi pangkalan data, serta boleh menyebabkan kemalangan pengeluaran besar dalam persekitaran pengeluaran. Jika rollback transaksi yang besar tidak dapat dielakkan, anda boleh menggunakan kaedah berikut:
- Untuk operasi kelompok, anda boleh menyerahkan dalam kelompok, seperti 1000 hingga 5000 baris
- ruang asal dan ruang meja sementara global boleh dilaraskan dengan sewajarnya. Adalah disyorkan untuk menggunakan 4 fail buat asal dan mulakan ibtmp1 global kepada 1G
- Dalam persekitaran ketersediaan tinggi dan memastikan konsistensi data, anda boleh mempromosikan hamba kepada tuan baharu, menyediakan perkhidmatan dan menunggu transaksi besar untuk digulung semula.
- Dalam kes yang melampau, anda boleh menggunakan kill -9 untuk memulakan semula operasi Kerana jumlah data adalah sangat besar, pemulihan mysql akan menjadi perlahan pemulihan ranap. Masa menunggu akan berbeza bergantung pada jumlah data
- Jika halaman data rosak atau rollback dilangkau semasa proses mulakan semula, anda boleh lulus innodb_force_recovery=3 (tiada operasi rollback transaksi dilakukan .)
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Balik semula MySQL (perkongsian ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

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



MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Navicat sendiri tidak menyimpan kata laluan pangkalan data, dan hanya boleh mengambil kata laluan yang disulitkan. Penyelesaian: 1. Periksa Pengurus Kata Laluan; 2. Semak fungsi "Ingat Kata Laluan" Navicat; 3. Tetapkan semula kata laluan pangkalan data; 4. Hubungi pentadbir pangkalan data.

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

Menyalin jadual di MySQL memerlukan membuat jadual baru, memasukkan data, menetapkan kunci asing, menyalin indeks, pencetus, prosedur tersimpan, dan fungsi. Langkah -langkah khusus termasuk: mewujudkan jadual baru dengan struktur yang sama. Masukkan data dari jadual asal ke dalam jadual baru. Tetapkan kekangan utama asing yang sama (jika jadual asal mempunyai satu). Buat indeks yang sama. Buat pencetus yang sama (jika jadual asal mempunyai satu). Buat prosedur atau fungsi yang disimpan yang sama (jika jadual asal digunakan).

Navicat untuk MariaDB tidak dapat melihat kata laluan pangkalan data secara langsung kerana kata laluan disimpan dalam bentuk yang disulitkan. Untuk memastikan keselamatan pangkalan data, terdapat tiga cara untuk menetapkan semula kata laluan anda: Tetapkan semula kata laluan anda melalui Navicat dan tetapkan kata laluan yang kompleks. Lihat fail konfigurasi (tidak disyorkan, risiko tinggi). Gunakan alat baris perintah sistem (tidak disyorkan, anda perlu mahir dalam alat baris arahan).

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Alasan Biasa Mengapa Navicat tidak dapat menyambung ke pangkalan data dan penyelesaiannya: 1. Periksa status berjalan pelayan; 2. Periksa maklumat sambungan; 3. Laraskan tetapan firewall; 4. Konfigurasi akses jauh; 5. menyelesaikan masalah rangkaian; 6. Periksa keizinan; 7. Memastikan keserasian versi; 8. menyelesaikan masalah lain.

Langkah -langkah untuk melaksanakan SQL di Navicat: Sambungkan ke pangkalan data. Buat tetingkap editor SQL. Tulis pertanyaan SQL atau skrip. Klik butang Run untuk melaksanakan pertanyaan atau skrip. Lihat hasilnya (jika pertanyaan dilaksanakan).
