在mysql主從複製中,如果主庫存在大事物提交,從庫則可能會延遲,所以在主庫執行的事物盡量使用小事物,下面舉乙個例子:
,udate
主庫:insert into t1(id,name,title,cdate,udate) select id2,name2,tile2,cdate2,udate2 from t2 where id2>***x and cdate <'2017-xx-xx xx:xx:xx';
上面的乙個sql,如果在查詢階段很慢,或者查詢出資料很多,主庫執行這個就不會很快,如果主庫執行需要1分多鐘,從庫就也可能是1分多,甚至如果從庫配置較低,就可能更長時間。怎麼解決呢?就是通過縮小事物。
第一種:限制查詢出的資料,從而限制插入資料
insert into t1(id,name,title,cdate,udate) select id2,name2,tile2,cdate2,udate2 from t2 where id2>***x and cdate <'2017-xx-xx xx:xx:xx' and id2 not in (select id from t1)limit 10000;
注意:這種方法比較慢,且查詢資料隨著不斷插入,存在不穩定性。
第二種:通過條件匯出需要的insert sql.
select concat('insert into t1(id,name,title,cdate,udate) values(',id2,',',name2,',',cdate2,',',udate2) from t2 where id2>***x and cdate <'2017-xx-xx xx:xx:xx' ;
通過第二種方法可以和好的避免延遲問題,也可以很快的完成任務。
mysql事物提交語句 MySQL事務的提交
事務的提交方式為手動提交 有兩個賬戶,a賬戶有900元,b賬戶有1100元 開啟乙個事務,使用update語句,實現由b賬戶,向a賬戶轉100元的轉賬功能 可以看出,在事務中實現了轉賬功能 此時,退出資料庫,然後重新登入,查詢資料庫中各賬戶的餘額 可以看出,事務中的轉賬功能沒有成功 因此,在事務中轉...
MySQL中大小寫問題
mysql語句中字母大小寫規則隨著語句元素的不同而變化,同時還要取決於mysql伺服器主機上的作業系統。關鍵字和函式名不區分字母的大小寫。如 abs bin now version floor等函式 select where order group by等關鍵字。在伺服器主機上,mysql資料庫和資...
mysql事物級別的問題。
mysql存在四個事物級別,最常用的是兩個,提交讀,重複讀。提交讀,簡單的理解就是在事物當中,可以讀取到其他事物提交的資料。比如,1,在事物a中執行語句 select from user 2,在事物b中執行語句更新user表。3,在事物a中再次執行 select from user,結果資料沒有變化...