Mysql中Event的一些測試

2022-02-15 02:16:44 字數 3249 閱讀 3534

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授權 就是想...