mysql连接怎么维持 mysql几种连接方式( 二 )


621564 my_db 223.4.49.212:46596 my_db Query 3890 sorting result
insert into tmp_trades(sid, d, h, tc, tm, tp, ic, new_tp, old_tp)
select a.seller_id as sid,
…………..
from orders_1 as a where seller_id =1 and is_detail = ‘1’
and createddate_format(‘2012-12-24 10:35:00’, ‘%Y-%m-%d %H:00:00’)
and gmt_createdate_format(‘2012-12-24 10:40:00’, ‘%Y-%m-%d %H:%i:00’)
and gmt_create = date_format(‘2012-12-24 10:35:00’, ‘%Y-%m-%d%H:%i:00’)
group by d, h
order by d
……………….此处省略其他sql
4、分析连接占用的原因:
可以看到数据库中有长时间没有执行完成的sql,一直占用着连接没有释放 , 而应用的请求一直持续不断的涌入数据库,这个时候数据库的连接很快就被使用完;所以这个时候需要排查为什么这些sql 为什么长时间没有执行完毕,是索引没有创建好,还是sql执行耗时严重 。
第一条sql:
INSERT INTO tmp_orders_modify (oid, tid, seller_id, status, gmt_create, gmt_modified)
SELECT oid, tid, seller_id, status, gmt_create, gmt_modified
FROM sys_info.orders WHERE
gmt_modifiedNAME_CONST(‘v_last’,_binary’2012-12-24 10:33:00’ COLLATE ‘binary’) AN
D gmt_modified = NAME_CONST(‘v_curr’,_binary’2012-12-24 10:32:00’ COLLATE ‘binary’)
是用户从sys_info 数据库中拉取订单到自己的业务库中那个,但是在orders 表上没有gmt_modified 的索引,导致了全表扫描;(更加详尽的排查方法可以参考:为什么我的RDS慢了);
第二条sql:
看到这条sql 正在进行sorting 排序,为什么导致sql 长时间sorting,通常情况下为排序的结果集太大导致排序不能在内存中完成,需要到磁盘上排序,进而导致了性能的下降;解决的办法就是降低排序的结果集 , 常用的手段是利用索引的有序性,消除排序,或者建立适当的索引减小结果集;我们可以看到第二条sql 的排序字段非常的复杂,但是我们可以看到查询的时间范围是很短,只有5 分钟的时间间隔,这个时候就可以在gmt_create上创建一个索引,过滤掉大部分的记录:
Alter tale order_1 add index ind_order_gmt_create(gmt_create);
(该用户对orders 进行了分表 , 大概有50 多张分表需要添加gmt_create 字段的索引);
5、经过上面两步的优化后,用户实例恢复正常:io 情况和connection 情况 , 可再次登录RDS控制台查看连接数 。
如何将MySql设置成持久性连接你所说的持久性连接是开机就自动运行吗,不大懂意思,请作下补充!
Mysql的服务安装完就会有,只要一开机就会自动运行这项服务,只要不用杀毒软件禁止就行了 。右键我的电脑——管理——服务和应用程序——服务;里面可以看到这项服务 , 你的要是禁用了,启动就可以了 。
如果想开机就启动Mysql这个程序,首先建立它的快捷方式 。左下角点开始——程序——启动;双击点开 , 把快捷方式放进去就行了 。或者直接打开那个文件夹,位置C:\Documents and Settings\Administrator\「开始」菜单\程序\启动,放进去一样的效果 。
如何使MySQL前后端连接SESSION变量保持一致最近在开发MySQL代理中间件过程中, 遇到这样一个问题: 当前后端连接不是一一对应mysql连接怎么维持的关系时, 对前端连接设置SESSION级别mysql连接怎么维持的变量时, 如何能使前端后变量的值保持一致?
一个直观的实现方式是, 拦截SET语句, 判断scope是SESSION时, 将变量的值保存在前端连接中. 当执行其mysql连接怎么维持他查询语句时, 在获取后端连接后, 先将前端连接中保存的变量逐一发送到后端连接, 然后执行查询语句, 释放后端连接时再将变量的值恢复.

推荐阅读