mysql的event schedule可以讓你設定你的mysql資料庫在某個時間段執行你想要的動作
create event test1
on schedule every 1 day
starts '2007-09-01 12:00:00'
on completion not preserve
do insert into yyy values('hhh','uuu');
或create event test
on schedule at '2007-09-01 12:00:00' + interval 1 day
on completion not preserve
do insert into yyy values('hhh','uuu')
解釋:從2023年9月1日開始,每天對錶yyy在12:00:00進行插入操作,並且只執行一次.
使用這個功能之前必須確保event_scheduler已開啟,可執行
set global event_scheduler=1;
或set global event_scheduler=on;
來開啟,也可以直接在啟動命令上加上--event_scheduler=1.例如:
mysqld...--event_scheduler=1
另外也可以直接在mysql.ini或者mysql.cnf中新增
event_scheduler=1
要檢視當前是否已經開啟時間排程器,可以執行如下sql:
show variables like 'event-scheduler';
或者select @@event_scheduler;
或者show processlist;
二,建立時間(create event)
create event [if not exists] event_name
on schedule
[on completion[not] preserve]
[enable|disable]
[comment 'comment']
do sql_statement;
schedule:
at timestamp [+interval interval]
|every interval [starts timestamp][ends timestamp]
interval:
quantity
1)首先來看乙個簡單的例子來演示每秒插入一條記錄到資料表:
use test
create table aaa(timeline timestamp);
create event e_test_insert
on schedule every 1 second
do insert into test.aaa values(current_timestamp);
等待三秒,再執行查詢看看:
mysql>select * from test.aaa;
就可以看到有三條資料存在
2)5天後清空aaa表:
create event e_test
on schedule at current_timestamp+interval 5 day
do truncate table test.aaa;
3)2023年7月20日12點整清空aaa表:
create event e_test
on schedule at timestamp '2007-07-20 12:00:00'
do truncate table test.aaa;
4)每天定時清空aaa表:---執行之後,是指每天當前建立時間執行該event
create event e_test
on schedule every 1 day
do truncate table test.aaa;
5)5天後開啟每天定時清空aaa表:
create event e_test
on schedule every 1 day
starts current_timestamp +interval 5 day
do truncate table test.aaa;
6)每天定時清空aaa表,5天後停止執行:
create event e_test
on schedule every 1 day
ends current_timestamp + interval 5 day
do truncate table test.aaa;
7)5天後開啟每天定時清空aaa表,乙個月後停止執行
create event e_test
on schedule every 1 day
starts current_timestamp + interval 5 day
ends current_timestamp + interval 1 month
do truncate table test.aaa;
三,修改事件(alter event)
alter event event_name
[on schedule schedule]
[rename to new_event_name]
[on completion [not] preserve]
[comment 'comment']
[enable|disable]
[do sql_statement]
1)臨時關閉事件
alter event e_test disable
2)開啟事件
alter event e_test enable
3)將每天清空aaa表修改成每5天清空一次
alter event e_test
on schedule every 5 day;
四,刪除事件(drop event)
語法很簡單,如下所示:
drop event [if exists] event_name
例如刪除前面建立的e_test事件
drop event e_test
當前前提是這個事件存在,否則會產生error 1513(hy000):unknown event錯誤,因此最好加上if exists
drop event if exists e_test
另外當在my.ini或者my.cnf中新增了event_scheduler=1引數,那麼在mysql啟動之後,存在的event還是會繼續執行.
mysql效能測試 MySQL的一些效能測試
針對資料庫引擎 myisam和innodb.做了一些效能測試和比較。包括有沒有索引的情況下的比較。主要是想證實一些效能問題。資料量 6 millions,機器 dell 2950 1.alter from innodb to myisam no index has two indexes 1min3...
mysql一些命令 mysql常用的一些命令
一 授權登入 參考grant all privileges on cacti.to hnf localhost identified by hnf 2014 只給cacti這個資料庫授權 grant all on to root localhost identified by huningfei 只...
mysql的一些基本指令 mysql 一些常用指令
登陸 1 mysql u root p 登陸,輸入root密碼 退出登陸 mysql exit mysql 為所有ip授權 mysql grant all privileges on to root identified by 123456 with grant option 為單一ip授權 就是想...