Rumah > Soal Jawab > teks badan
Jadi pada asasnya, saya kini mempunyai pertanyaan ini:
UPDATE act AS a INNER JOIN blok AS b ON b.fav_pat = a.pat_id SET a.blok_id = b.id
Pada masa ini tamat masa kerana jumlah data yang banyak yang saya ada. Adakah terdapat cara untuk mengelakkan tamat masa tanpa mengubah konfigurasi pangkalan data?
P粉6752585982024-03-30 00:05:32
Pakej flyway yang anda gunakan berfungsi paling baik untuk membenarkan pengembalian penuh bagi sebarang operasi yang tidak lengkap menggunakan semantik transaksi RDBMS hos. Ini bermakna ia direka bentuk untuk melaksanakan operasi kemas kini seperti yang anda tunjukkan kepada kami dalam satu transaksi yang mematuhi ACID.
Jika jadual yang terlibat adalah besar (berjuta-juta baris atau lebih), transaksi boleh menjadi sangat besar. Mereka boleh ranap pelayan MySQL anda, menumpahkan log transaksi ke cakera atau SSD. Melakukan log transaksi ini boleh mengambil masa yang lama. Anda tidak menyebut bilangan baris, tetapi jika bilangan baris adalah besar, Flyway mungkin bukan alat yang sesuai untuk tugas itu.
Tamat masa kunci anda menunjukkan bahawa anda melakukan ini pada pangkalan data yang mempunyai aktiviti serentak lain. Anda mungkin mahu melakukan ini pada pangkalan data yang senyap untuk hasil terbaik.
Anda boleh meningkatkan tamat masa menunggu kunci dengan melakukan ini.
show variables like 'innodb_lock_wait_timeout'; -- previous vale SET GLOBAL innodb_lock_wait_timeout = 300; -- five min
Kemudian, mungkin cuba lagi sebelum matahari terbit pada hari cuti atau pada waktu tenang yang lain. Maklumat lanjut di sini.
Apabila kerja Flyway anda selesai, pertimbangkan untuk memulihkan tamat masa kunci kepada nilai sebelumnya.
Anda juga boleh mempertimbangkan kemas kini kelompok, seperti mengemas kini 1000 baris pada satu masa. Tetapi flyway nampaknya tidak menyokong perkara ini. Jika anda melalui laluan ini, anda boleh bertanya soalan lain.