BeWithYou

胡搞的技术博客

运维/工具

MySQL分组后获取每组特定列最大值的记录


MySQL分组后获取每组特定列最大值的记录 如果只是获取特定列的最大值,很简单。 SELECT MAX(price) FROM tb_stuff GROUP BY shop_id; 但是这里我们要获取每一组符合最大值的记录完整值,这里用个黑科技,先子查询内部排序以后,再从外部分组查询。 SELECT *,tmp.id as id FROM (SELECT * FROM tb_stff ORDER BY price D……
运维/工具

sphinx中bigint类型兼容问题


sphinx中bigint类型兼容问题 编译sphinx时如果没有加如下./configure --enable-id64的参数的话,是不支持mysql中bigint类型的字段的主键。如果此时不想重新编译sphinx,我们还有曲线救国的方法。 比如我们数据表的自增id字段为bigint类型,且为主键。 可以修改conf文件中的sql_query,添加select项目:select id, id as id_str,other_content from tab……
运维/工具

mongodb如何随机取出若干条文档


最近在重构德州机器人的服务,原本的机器人列表写在json文件中,每次进程读取文件后放在内存中。这样并不灵活,并且缺乏实时性。这次重构将其放入mongo中,每隔若干时间从服务端PHP全量拉取数据并更新mongo,比如更新机器人的金钱余额等。同时还可以根据程序内实际派遣情况,同步更新mongo中机器人的状态。 遇到一个问题,如何从若干条符合条件的document中选择几条? mongo中的find方法和findOne方法取出……
运维/工具

mongoDB时间timezone问题


之前有个工具性质的内部系统,为了尝尝鲜,我选择了用mongo作为数据库。中间踩过不少坑,后来整理了一个PPT做了次内部分享。结果就没几个人来听…… 尴尬 今天发现了个有关时间的问题,记录一下。 之前我们记录时间用的是unix时间戳,后来想用按日期分组的功能,发现比较困难。因为mongo里关于日期的分组函数都是基于ISODate型数据的。看起来是这样的: db.getCollection(……
运维/工具

有关TRUNCATE不能事务回滚


今天做一个从文本全量导入数据库的功能,每次全量更新表里的数据。想法是在事务里先truncate掉表格,然后批量insert进去,出错则rollback,全部insert成功则commit。 然而发现一个问题,truncate以后即使回滚了也不能回到最初的状态。查了一下,truncate属于DDL语句,执行的时候是隐含着自动commit的,所以并不能在事务里使用。 简要记一下MySQL中数据语言的概念: 数据查询语……
运维/工具

awk扫描分析nginx访问日志


年底感觉没啥活干,尤其是在年底跳槽到新公司,更是没什么重要的项目可以做。老大布置任务,要做一个平台统计每个站点后台的nginx日志,针对url维度分析访问量,加载时间等。 当时设想是这样的,扫描任务部署在线上nginx机器上,定时执行。用shell脚本分析日志,然后找一台开发虚拟机部署管理后台,从shell脚本curl给php接口上报统计结果。 设想的挺好,但是等shell脚本写完以后放到……
回到顶部