最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下:
begin; # 操作1 begin; # 操作2 rollback;
执行完后出现了操作1的数据真正写入,只有操作2的数据回滚了。在第一个事务没有提交或回滚时,再开启第二个事务时,会自动提交第一个事务。
最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下:
begin; # 操作1 begin; # 操作2 rollback;
执行完后出现了操作1的数据真正写入,只有操作2的数据回滚了。在第一个事务没有提交或回滚时,再开启第二个事务时,会自动提交第一个事务。
其它语言我不知道,反正做php最讨厌碰到bit类型的mysql字段了,虽然可以定义为int(1)一样用,但是强迫症怎么能忍呢???下面介绍一下,一次处理,无视环境差异的写法。
先说一下这个需求,需要判断某个域名是否在黑名单中。黑名单中的域名一旦设置,其下任何级的域名都认为是在黑名单中。
如黑名单中加入a.com,则a.com、www.a.com、1.2.3.a.com等都算进入黑名单。
如黑名单中加入com,则所有com域名都算进入黑名单。
10W黑名单时,大概在200毫秒左右。接下来想到的办法,10W黑名单时,耗时1-3毫秒左右。
SQLAdvisor是由美团点评公司DBA团队(北京)开发维护的SQL优化工具:输入SQL,输出索引优化建议。 它基于MySQL原生词法解析,再结合SQL中的where条件以及字段选择度、聚合条件、多表Join关系等最终输出最优的索引优化建议。目前SQLAdvisor在公司内部大量使用,较为成熟、稳定。
美团点评致力于将SQLAdvisor打造成一款高智能化SQL优化工具,选择将已经在公司内部使用较为成熟的、稳定的SQLAdvisor项目开源,github地址。希望与业内有类似需求的团队,一起打造一款优秀的SQL优化产品。
如果你的SQL语句出现了“MySQL server has gone away”错误,那么很有可能是max_allowed_packet这一项设置的问题。
MySQL通过max_allowed_packet配置项来限制接收的数据包大小,默认一般是1M,也就是说如果你插入的数据超过1M就会出错。
我们可以通过下面的语句查看
show VARIABLES like 'max_allowed_packet';