所謂的慢,是指高併發了,mysql就痿了。sas硬碟,隨機io速率到達10~15m,io就基本是100%了。
這時就呵呵了。cpu有巨大的剩餘也沒用,記憶體也幫不上忙,只能ssd才能解決。
所謂通過程式--非同步事件之類的,去加1,減1地統計結果--好像是一種方案.
最終上線後,資料量一大,併發量一大,資料最後出來負數---尼瑪,這就是所謂的`資料一致性的bug`
最終嘗試使用mysql的觸發器解決,sql**如下:
create
table
ifnot
exists
`yuec_users`(
invite_id varchar(255)
);create
table
ifnot
exists
`total_yuec_users_invite_id` (total bigint not
null);
drop
trigger
ifexists after_insert_yuec_users;
drop
trigger
ifexists after_update_yuec_users;
drop
trigger
ifexists before_delete_yuec_users;
create
trigger after_insert_yuec_users
after
insert
on yuec_users for
each
rowbegin
if new.invite_id != '1014766'
and new.invite_id != ''
and new.invite_id is
notnull
then
update
`total_yuec_users_invite_id`
set total=`total`+1;
endif;
end;
create
trigger after_update_yuec_users
after
update
on yuec_users for
each
rowbegin
if new.invite_id != '1014766'
and new.invite_id != ''
and new.invite_id is
notnull
then
update
`total_yuec_users_invite_id`
set total=`total`+1;
endif;
if old.invite_id != '1014766' and old.invite_id != '' and old.invite_id is not null then
update
`total_yuec_users_invite_id`
set total=`total`-1;
endif;
end;
create
trigger before_delete_yuec_users
before
delete
on yuec_users for
each
rowbegin
if old.invite_id != '1014766'
and old.invite_id != ''
and old.invite_id is
notnull
then
update
`total_yuec_users_invite_id`
set total=`total`-1;
endif;
end;
通過觸發器呼叫DTS包
此觸發器的作用就是把當前上傳的excel以全域性變數的形式傳遞給dts包,然後通過dts包執行匯入資料庫中,返回執行結果。create trigger syscrmstockinfofromexcel on dbo t after insert asset ansi nulls off set no...
通過儲存過程 建立動態觸發器
author bean create date 2011 08 12 問題描述1 很多時候我們乙個模板會有很多的 例如care 專案,一共有29張表,想刪除一條單據,那麼我們要寫29條delete語句 問題描述2 如果不寫觸發器,很多時候只是 1表的資料被刪除了,剩下的 2,3,4.表的資料還會存在...
用於父子結構統計的觸發器
情景 乙個存在父子關係的表結構 要求插入,更新時 父節點 的 統計出子節點對應欄位的和 表結構 create table tree parent child id varchar2 50 not null,parentid varchar2 50 not null,need sum number 觸...