扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在事件里运行下列调用存储过程语句就可以了,前提是用户要有运行该存储过程的权限
成都创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为普兰企业提供专业的网站制作、成都网站设计,普兰网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
CALL Procedure_Name([parameter[,...]]);
例如:
Call myPro(100,'Johnson');
1、命令查看是否开启event_scheduleSHOWVARIABLESLIKE'event_scheduler'。
2、使用命令开启临时开启,重启mysql又还原回去。
3、修改配置永久修改配置文件的[mysqld]部分加上event_scheduler=ON。
mysql要实现定时执行sql语句就要用到Event
具体操作如下:
先看看看event 事件是否开启
show variables like '%sche%';
如没开启,则开启。需要数据库超级权限
set global event_scheduler =1;
创建存储过程 update_a (注:就是你要执行的sql语句)
mysql create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id);
创建一个定时任务:event e_updateA
mysql create event if not exists e_updateA
- on schedule every 60 second ---设置60秒执行一次
- on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行
- on completion preserve
- do call update_a(); ---执行update_a()存储过程
创建Event之后,sql语句就定时执行一次。
关闭事件任务
通常情况下在PHP中MySQL查询是串行的,如果能实现MySQL查询的异步化,就能实现多条SQL语句同时执行,这样就能大大地缩短MySQL查询的耗时,提高数据库查询的效率。目前MySQL的异步查询只在MySQLi扩展提供,查询方法分别是:
1、使用MYSQLI_ASYNC模式执行mysqli::query
2、获取异步查询结果:mysqli::reap_async_query
使用mysql异步查询,需要使用mysqlnd作为PHP的MySQL数据库驱动。
使用MySQL异步查询,因为需要给所有查询都创建一个新的连接,而MySQL服务端会为每个连接创建一个单独的线程进行处理,如果创建的线程过多,则会造成线程切换引起系统负载过高。Swoole中的异步MySQL其原理是通过MYSQLI_ASYNC模式查询,然后获取mysql连接的socket,加入到epoll事件循环中,当数据库返回结果时会回调指定函数,这个过程是完全异步非阻塞的。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流