爱飞 发表于 2015-1-16 20:10:34

绝无经由的MySQL事务调剂器Event Scheduler详解

MySQL数据库归MySQLAB公司所有,但是这个软件是开源的,有一个MySQL学习教程可以免费下载。稍俱常识的新入门者都可以轻松实现在一个常见硬件上安装和配置MySQL。事务调剂器是在MySQL5.1中新增的另外一个特征功效,能够作为准时义务调剂器,代替部分本来只能用操纵体系义务调剂器才干完成的准时功>能。比方,linux中的crontabe只能准确到每分钟实行一次,而MySQL的事务调剂器则能够完成每秒钟实行一个义务,这在一些对及时性要>求较高的情况下就十分有用了。

事务调剂器是准时触发实行的,在这个角度上也能够称作是"一时的触发器"。触发器只是针对某个表发生的事务实行一些语句,而事务调剂器则是在某一个(距离)工夫实行一些语句。事务是由一个特定的线程来办理的,也就是所谓的"事务调剂器"。启用事务调剂器后,具有SUPER权限的账户实行SHOWPROCESSLIST就能够看到这个线程了。经由过程设定全局变量event_scheduler的值便可静态的把持事务调剂器是不是启用。

(root:localhost:)test>SETGLOBALevent_scheduler=ON;(root:localhost:)test>showprocesslistG***************************4.row***************************Id:46147User:event_schedulerHost:localhostdb:NULLCommand:DaemonTime:1State:WaitingonemptyqueueInfo:NULL


如上,该线程的一切者是event_scheduler。

使用案例

本案例是使用eventscheduler的特征,每秒钟挪用一次存储历程,用于判别SLAVE是不是一般运转,假如发明SLAVE封闭了,疏忽0次毛病,然后从头启动SLAVE。

起首创立存储历程

delimiter//createprocedure`Slave_Monitor`()beginSELECTVARIABLE_VALUEINTO@SLAVE_STATUSFROMinformation_schema.GLOBAL_STATUSWHEREVARIABLE_NAME=SLAVE_RUNNING;IF(ON!=@SLAVE_STATUS)THENSETGLOBALSQL_SLAVE_SKip_COUNTER=0;SLAVESTART;ENDIF;end;//delimiter;

因为存储过程当中没法挪用相似SHOWSLAVESTATUS如许的语句,因而没法失掉切实的复制毛病信息和毛病代码,不克不及进一步的处置SLAVE中断的各类情形。

接着,创立义务

CREATEEVENTIFNOTEXISTS`Slave_Monitor`
ONSCHEDULEEVERY5SECOND
ONCOMPLETIONPRESERVE
DO
CALLSlave_Monitor();

创立了一个义务,每5秒钟实行一次,义务停止后仍旧保存该义务,而不是删除。固然了,在本例中的义务不会停止,除非将它手动克制了。

假如在运转中想要一时封闭一下某个义务,实行ALTEREVENT语句便可:

(root:localhost:)test>alterevent`Slave_Monitor`ON
COMPLETIONPRESERVEDISABLE;
(root:localhost:)test>alterevent`Slave_Monitor`ON
COMPLETIONPRESERVEENABLE;
如IBM公司最近宣布让渠道合作伙伴分销其SaaS应用程序的新计划。微软认为MySQL学习教程是销售其云计算服务的重要组成部分。然而即使有这种趋势,DBaaS仍然不同于内部数据库,解决方案提供商必须认识到这一点;否则,他们不仅仅是丢失几个客户,而是要失去的更多。

飘飘悠悠 发表于 2015-1-18 18:20:21

可以动态传入参数,省却了动态SQL的拼写。

深爱那片海 发表于 2015-1-27 16:16:14

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

再见西城 发表于 2015-2-5 12:15:55

外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。

金色的骷髅 发表于 2015-2-11 20:09:42

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

因胸联盟 发表于 2015-3-2 18:46:48

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

柔情似水 发表于 2015-3-11 05:57:33

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

山那边是海 发表于 2015-3-25 04:29:24

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
页: [1]
查看完整版本: 绝无经由的MySQL事务调剂器Event Scheduler详解