MySQL

mysqldump

  • 只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)
    mysqldump --opt -h 主機(jī)名或地址 -d 數(shù)據(jù)庫名 -u root -p密碼 > xxx.sql

  • 只導(dǎo)出數(shù)據(jù)
    mysqldump -t 數(shù)據(jù)庫名 -uroot -p密碼 > xxx.sql

  • 導(dǎo)出數(shù)據(jù)和表結(jié)構(gòu)
    mysqldump 數(shù)據(jù)庫名 -uroot -p密碼 > xxx.sql

  • 導(dǎo)出指定表結(jié)構(gòu)
    mysqldump -uroot -p密碼 -B 數(shù)據(jù)庫名 --table 表名 > xxx.sql

  • 導(dǎo)出單表數(shù)據(jù)
    mysqldump -h 主機(jī)地址 -u用戶名 -p密碼 數(shù)據(jù)庫名 表名 > xxx.sql

  • 導(dǎo)入數(shù)據(jù)
    進(jìn)入mysql
    use 數(shù)據(jù)庫
    source xxx.sql

dev 上mysql 相關(guān)命令:
sudo service mysql start/stop/restart

mysql 5.6版本慢查詢配置參數(shù)
slow_query_log = 1
slow_query_log_file = XXX
long_query_time = 1


MySQL 事件調(diào)度器

  • 介紹
    事件調(diào)度器是在 MySQL 5.1 中新增的另一個(gè)特色功能,可以作為定時(shí)任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功能。事件調(diào)度器是定時(shí)觸發(fā)執(zhí)行的,在這個(gè)角度上也可以稱作是”臨時(shí)的觸發(fā)器”。觸發(fā)器只是針對某個(gè)表產(chǎn)生的事件執(zhí)行一些語句,而事件調(diào)度器則是在某一個(gè)(間隔)時(shí)間執(zhí)行一些語句。事件是由一個(gè)特定的線程來管理的,也就是所謂的”事件調(diào)度器”。啟用事件調(diào)度器后,擁有 SUPER 權(quán)限的賬戶執(zhí)行 SHOW PROCESSLIST 就可以看到這個(gè)線程了。通過設(shè)定全局變量event_scheduler 的值即可動(dòng)態(tài)的控制事件調(diào)度器是否啟用。

  • 開啟事件調(diào)度器
    SELECT @@event_scheduler; # 查看事件調(diào)度器是否開啟
    SET GLOBAL event_scheduler = ON; # 開啟事件調(diào)度器,mysql重啟后會(huì)失效

  • 修改配置文件,開啟事件調(diào)度器
    在 my.cnf 的 [mysqld] 下添加:
    event_scheduler=ON

管理事件的相關(guān)命令

  • 查看所有事件
    show events

  • 查看事件創(chuàng)建信息
    show create event <event_name>

  • 查看事件詳細(xì)信息
    SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = <event_name> AND EVENT_SCHEMA = <schema_name>

  • 關(guān)閉事件
    ALTER EVENT <event_name> DISABLE

  • 開啟事件
    ALTER EVENT <event_name> ENABLE

  • 刪除事件
    DROP EVENT IF EXISTS <event_name>

  • 創(chuàng)建事件
    CREATE EVENT [IF NOT EXISTS] <event_name>
    ON SCHEDULE <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 {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
    WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
    DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

ON SCHEDULE 計(jì)劃任務(wù),有兩種設(shè)定計(jì)劃任務(wù)的方式:

  1. AT 時(shí)間戳,用來完成單次的計(jì)劃任務(wù)。
  2. EVERY 時(shí)間(單位)的數(shù)量時(shí)間單位[STARTS 時(shí)間戳] [ENDS時(shí)間戳],用來完成重復(fù)的計(jì)劃任務(wù)

在兩種計(jì)劃任務(wù)中,時(shí)間戳可以是任意的TIMESTAMP 和DATETIME 數(shù)據(jù)類型,時(shí)間戳需要大于當(dāng)前時(shí)間。
在重復(fù)的計(jì)劃任務(wù)中,時(shí)間(單位)的數(shù)量可以是任意非空(Not Null)的整數(shù)式,時(shí)間單位是關(guān)鍵詞:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。

提示:
其他的時(shí)間單位也是合法的如:QUARTER, WEEK,YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建議使用這些不標(biāo)準(zhǔn)的時(shí)間單位。

ON COMPLETION參數(shù)表示"當(dāng)這個(gè)事件不會(huì)再發(fā)生的時(shí)候",即當(dāng)單次計(jì)劃任務(wù)執(zhí)行完畢后或當(dāng)重復(fù)性的計(jì)劃任務(wù)執(zhí)行到了ENDS階段。而PRESERVE的作用是使事件在執(zhí)行完畢后不會(huì)被Drop掉,建議使用該參數(shù),以便于查看EVENT具體信息。

若干例子:

  • 每秒插入一條記錄到數(shù)據(jù)表
    CREATE EVENT e_test_insert
    ON SCHEDULE EVERY 1 SECOND
    DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

  • 5天后清空test表:
    CREATE EVENT e_test
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
    DO TRUNCATE TABLE test.aaa;

  • 2007年7月20日12點(diǎn)整清空test表:
    CREATE EVENT e_test
    ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'
    DO TRUNCATE TABLE test.aaa;

  • 每天定時(shí)清空test表:
    CREATE EVENT e_test
    ON SCHEDULE EVERY 1 DAY
    DO TRUNCATE TABLE test.aaa;

  • 5天后開啟每天定時(shí)清空test表:
    CREATE EVENT e_test
    ON SCHEDULE EVERY 1 DAY
    STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    DO TRUNCATE TABLE test.aaa;

  • 每天定時(shí)清空test表,5天后停止執(zhí)行:
    CREATE EVENT e_test
    ON SCHEDULE EVERY 1 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    DO TRUNCATE TABLE test.aaa;

  • 5天后開啟每天定時(shí)清空test表,一個(gè)月后停止執(zhí)行:
    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;

  • 每天凌晨一點(diǎn)執(zhí)行
    CREATE EVENT event_call_inproc
    ON SCHEDULE EVERY 1 DAY
    STARTS '2013-09-12 01:00:00'
    ON COMPLETION PRESERVE ENABLE
    DO call ty.inproc();

  • 每天凌晨三點(diǎn)執(zhí)行
    create event event_call_defer
    on schedule every 1 day
    starts date_add(date(curdate() + 1),interval 3 hour)
    on completion preserve enable
    do call test.warn();

  • 每個(gè)月的一號凌晨1 點(diǎn)執(zhí)行
    CREATE EVENT EVENT2
    ON SCHEDULE EVERY 1 MONTH
    STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL 1 MONTH),INTERVAL 1 HOUR)
    ON COMPLETION PRESERVE ENABLE
    DO CALL STAT();

  • 每個(gè)季度一號的凌晨2點(diǎn)執(zhí)行
    CREATE EVENT TOTAL_SEASON_EVENT
    ON SCHEDULE EVERY 1 QUARTER
    STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)
    ON COMPLETION PRESERVE ENABLE
    DO CALL SEASON_STAT();

  • 每年1月1號凌晨四點(diǎn)執(zhí)行
    CREATE EVENT TOTAL_YEAR_EVENT
    ON SCHEDULE EVERY 1 YEAR
    STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,'-',1,'-',1)),INTERVAL 4 HOUR)
    ON COMPLETION PRESERVE ENABLE
    DO CALL YEAR_STAT();

[ON COMPLETION [NOT] PRESERVE]可以設(shè)置這個(gè)事件是執(zhí)行一次還是持久執(zhí)行,默認(rèn)為NOT PRESERVE。

  • 每天定時(shí)清空test表(只執(zhí)行一次,任務(wù)完成后就終止該事件):
    CREATE EVENT e_test
    ON SCHEDULE EVERY 1 DAY
    ON COMPLETION NOT PRESERVE
    DO TRUNCATE TABLE test.aaa;

[ENABLE | DISABLE]可是設(shè)置該事件創(chuàng)建后狀態(tài)是否開啟或關(guān)閉,默認(rèn)為ENABLE。
[COMMENT 'comment']可以給該事件加上注釋。

  • 修改事件
    ALTER EVENT event_name
    [ON SCHEDULE schedule]
    [RENAME TO new_event_name]
    [ON COMPLETION [NOT] PRESERVE]
    [COMMENT 'comment']
    [ENABLE | DISABLE]
    [DO sql_statement]

  • 將每天清空test表改為5天清空一次:
    ALTER EVENT e_test
    ON SCHEDULE EVERY 5 DAY;


MySQL 預(yù)定義語句

  • 介紹
    借助預(yù)定義語句可以實(shí)現(xiàn)動(dòng)態(tài)SQL語句

  • 語法
    定義
    PREPARE
    <stmt_name>
    FROM
    <preparable_stmt>
    執(zhí)行
    EXECUTE <stmt_name>

  • 注意
    1> 即使 preparable_stmt 語句中的 ? 所代表的是一個(gè)字符串,你也不需要將 ? 用引號包含起來
    2> 如果新的 PREPARE 語句使用了一個(gè)已存在的 stmt_name ,那么原有的將被立即釋放!
    即使這個(gè)新的 PREPARE 語句因?yàn)殄e(cuò)誤而不能被正確執(zhí)行
    3> PREPARE stmt_name 的作用域是當(dāng)前客戶端連接會(huì)話可見
    4> 要釋放一個(gè)預(yù)定義語句的資源,可以使用 DEALLOCATE PREPARE 句法
    5> 執(zhí)行語句中,如果 stmt_name 不存在,將會(huì)引發(fā)一個(gè)錯(cuò)誤
    6> 如果在終止客戶端連接會(huì)話時(shí),沒有顯式地調(diào)用 DEALLOCATE PREPARE 句法釋放資源,服務(wù)器端會(huì)自己動(dòng)釋放它
    7> PREPARE 語句不可以用于存儲(chǔ)過程,自定義函數(shù)!但從 MySQL 5.0.13 開始,它可以被用于存儲(chǔ)過程,仍不支持在函數(shù)中使用!

例子:

SET @skip=1; SET @numrows=5;
PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?, ?";
EXECUTE STMT USING @skip, @numrows;

# 根據(jù)當(dāng)前日期創(chuàng)建表
set @tb_name = replace(current_date(), '-', '');
set @sqlcmd = concat("create table if not exists pay.", @tb_name, "(id int primary key);");
prepare stmt from @sqlcmd;
execute stmt;

MySQL 分表及分表查詢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,802評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內(nèi)容