Nov 23

mysql的两个参数

最近和系统部一起做了一个数据库迁移,把mysql从老旧狭小的服务器迁到了一个大内存的服务器上,不料迁移之后插入速度慢了不少,平均每4-5分钟slow query log就能出现4-5条,而且这4-5条绝大部分是insert,而且挨着,从日志来看,它们之间是在互相锁着。engine用的是myisam。

第一感觉,应该是锁的问题。但是查了很多状态和参数,并没找到合理的解释,也没有定位到异常的位置。

再仔细读读日志,发现连续的几条慢日志,并不都是因为锁的时间长。有些插入,没有人和它竞争,它自己就很慢;而它执行时,锁了表,就导致后面的几条很慢。由此猜想,应该是单条插入过慢,不是锁的问题。

在排除了网络、硬盘有问题的可能后,猜想应该是mysql配置本身有问题。第一步,发现了“concurrent_insert”这个参数。默认值是1,即可以并行读写,但是当表中数据有删除、造成前面的若干行有洞洞(碎片)时,就要优先往洞洞里插入,以确保碎片减少;当设置为2时,不管有没有碎片,都是往末尾插。因为导数据时,我手工删除了很多旧数据,所以感觉改成2会解决问题。但是试了之后,发现并无效果。猜想,我删除数据后,执行了optimize,可能碎片已经整理完了。

第二步,找到了“sync_binlog”这个参数。服务器上设置为1,即每当有任何一条insert或者update,都要同步到bin log上。我试着改成了100,即有100条修改后,才会同步到bin log文件。修改后果然见效,时隔16分钟,才连续出现了3条慢语句。之后,我决定赌一把,把它改成了0,即由操作系统决定何时同步。到现在已经有近40分钟,再也没有出现慢的insert。希望不只是神灵保佑的原因。

多说一句,sync_binlog这个参数我怀疑不会影响主从备份,因为从库来获取更新时,联系的是主库,而不是copy bin log文件,bin log有没有写到硬盘上,于此无干。

Sep 19

植物大战僵尸的一天

早上,从拥挤的地铁人群中杀出重围来到公司,坐下喝第一口水的当儿,就只见屏幕上QQ与RTX齐飞,邮件共JIRA一色;在晨会的间隙中处理留言不到一半,产品经理、测试和其他部门协同开发的程序员就找上头来,调这个,测那个。大脑如果有内存,这会一定也快要爆满了。

这情景让我想起植物大战僵尸,或是塔防游戏。我就像是一个豌豆,而且还是三嘴豌豆;产品经理、测试人员和其他人就像是满屏幕的僵尸,一波未完,一波又来。

时至下午,项目例会,我心里闪出了植物大战僵尸中的提示:一大拨僵尸来了!果然,开完会,活又多了!回来后又是一番紧锣密鼓:找墙果在前面帮我扛一阵,找土豆地雷给产品经理预备下,找太阳花给我来点资源……

终于,僵尸们不再刷新了,时钟已经指向了下班时间,也就到了每天最舒心的写代码时段。喝下大主编亲手煮的一巨杯咖啡,感觉格外兴奋,一不小心就搞到了法定打车时间。如果不是豌豆弟找我问问题,我还沉醉在新埋的土豆地雷里。给新豌豆答疑解惑完毕,已经是刷牙时间,弟弟在QQ上给我发消息:再不回来,蛋黄月饼就没了!

赶紧收工回家,看看街上依然是行人匆匆,不知还有多少豌豆仍在奋斗,多少僵尸蓄势待发!

Sep 04

丰宁坝上

闪电湖。从大滩镇继续往张家口方向行驶约20公里,路上风景如画,只要光与影给力,处处都是景点,随时都可停车。真正让人陶醉的地方,不一定是目的地。

回程路上,被天边的云朵和它们的投影吸引,在路边停车,爬上一个小小的山坡,竟然发现了这些美丽的小花。

的确如一位英国摄影师所说,一般的爱好者见到美丽的风景,会不知所措。我当时就被它们深深地吸引和震撼了,一口气拍了好多张。现在想想,真应该好好思量再按动每一次快门。


这张是二丫的创意,逆光拍摄,拍下小花们灿烂的脸庞。

我们从山坡上下来时,同伴的车已经开走了。的确,和爱好胡拍的人一起游玩是一件痛苦的事,走到哪里都想停一停,看到什么都要比划比划。不过,我们这次确实得到了意外的收获。除去和朋友们游玩的欢乐,单是凭这开着长长一溜小花的山坡,也当算是此行不虚了。