cari
Rumahpangkalan datatutorial mysqlBalik 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.

Balik semula MySQL (perkongsian ringkasan)

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:

Balik semula MySQL (perkongsian ringkasan)

  • buat asal fail

    Balik semula MySQL (perkongsian ringkasan)

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.

Balik semula MySQL (perkongsian ringkasan)

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:

Balik semula MySQL (perkongsian ringkasan)

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:

Balik semula MySQL (perkongsian ringkasan)

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:

Balik semula MySQL (perkongsian ringkasan).

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!

Kenyataan
Artikel ini dikembalikan pada:CSDN. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Bagaimana saya menggugurkan atau mengubahsuai pandangan yang ada di mysql?Bagaimana saya menggugurkan atau mengubahsuai pandangan yang ada di mysql?May 16, 2025 am 12:11 AM

TODROPAVIEWInMYSQL, gunakan "dropviewififeXistsview_name;" andTomodifyAview, gunakan "createorreplaceviewview_nameasSelect ..."

Pandangan MySQL: Corak reka bentuk mana yang boleh saya gunakan dengannya?Pandangan MySQL: Corak reka bentuk mana yang boleh saya gunakan dengannya?May 16, 2025 am 12:10 AM

Mysqlviewscaneffectivetyutilizedesignpatternslikeadapter, penghias, kilang, andobserver.1) adapterpaternaptsdatafromdifferenttablesintoaunifiedview.2)

Apakah kelebihan menggunakan pandangan di MySQL?Apakah kelebihan menggunakan pandangan di MySQL?May 16, 2025 am 12:09 AM

ViewsinmysqlarebeneficialforsImplifingceMlexqueries, Enhancingsecurity, MemastikanDataconsistency, andoptimizingperformance

Bagaimana saya boleh membuat pandangan mudah di mysql?Bagaimana saya boleh membuat pandangan mudah di mysql?May 16, 2025 am 12:08 AM

TOCREATEASIMPLEVIEWInMYSQL, USETHECreatEviewStatement.1) definetheViewWithCreateViewView_nameas.2)

MySQL Buat Penyataan Pengguna: Contoh dan Kesalahan BiasaMySQL Buat Penyataan Pengguna: Contoh dan Kesalahan BiasaMay 16, 2025 am 12:04 AM

TOCReateUsersinMysql, UsethecreateUserStatement.1) Foralocaluser: createuser'localuser '@' localhost'identifiedby'SecureShword '; 2) foraremoteuser: createuser'remoteuser'@'%'

Apakah batasan menggunakan pandangan di MySQL?Apakah batasan menggunakan pandangan di MySQL?May 14, 2025 am 12:10 AM

Mysqlviewshavelimitations: 1) theDon'tsupportallsqloperations, bintikDatamanipulationThroughviewswithjoinsorsubqueries.2) merekacanimpactperformance, terutamanya dengan komplekssum

Faktor apa yang mempengaruhi bilangan pencetus yang boleh saya gunakan di MySQL?Faktor apa yang mempengaruhi bilangan pencetus yang boleh saya gunakan di MySQL?May 14, 2025 am 12:08 AM

Mysqldoes'timposeahardlimitontriggers, butpracticalfactorsDeterminetheirefectiveus

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)