2015-02-28 Robin Wen
文/温国兵 一 引子 有个知友邀请我回答问题,问道:「MySQL 每次查询一条数据查 10 次和一次查询 10 条数据效率有多少差距?」 总体上来说,一次查询 10 条数据效率是高于每次查询一条数据查 10 次的。但究竟差距多少,具体的数据很难说。这本来是一个很简单的问题,但我还是想亲身实践下,给以后碰到这个问题的朋友一点参考。我先做一个模拟,然后在文末给出一个分析。 说明:本文中的模拟只能提供参考。实际情况跟硬件配置、系统负载等因素相关。 二 模拟 在做模拟之前,得有数据。所以我创建了一组测试数据,如下: ``` bash mysql> USE test; Database changed mysql> CREAT 继续阅读 »
2015-07-12 Robin Wen
目录 Table of Contents {:toc} 文/温国兵 一 引子 很久没写技术文章了,打算最近几周把最近遇到的故障总结下。这篇文章分享周四遇到的故障。 另外,最近有创作欲望,只等时间宽裕。 二 起因 周四一整天,研发反应某台数据库僵死,后面的会话要么连接不上,要么要花费大量的时间返回结果,哪怕是一个简单的查询。 三 处理 首先去监控平台查看服务器以及数据库状态,发现这台数据库有大量的慢查询。继续看服务器监控,CPU 平均使用率较高,IO 读写平均值正常。登录到 MySQL,使用 SHOW PROCESSLIST 查看会话状态,总数居然有 600+,这是很不正常的。查看慢查询日志,发现出问题的 SQL 主要 继续阅读 »
2015-08-17 veryyoung
前几天做一个需求用到了sql in 子查询, 大概sql如下 SELECT * FROM table_a WHERE id IN (SELECT id FROM table_id_list) 执行时间150m,完全没法忍受 单独执行 SELECT id FROM table_id_list 秒查,只有七八行结果。 把查询结果写死在sql中 SELECT * FROM table_a WHERE id IN (1,2,3,4,5) 依然秒查 解决方案 再把ID列表select一次 SELECT * FROM table_a WHERE id IN (SELECT id from(SELECT id FROM table 继续阅读 »
2014-04-06 Robin Wen
目录 Table of Contents {:toc} 文/温国兵 问题描述 生产库中一张表的数据10亿级别,另一张表数据100亿级别,还有其他表的数据也是相当地庞大。入职之前不知道这些表有那么大的数据量,于是习惯了使用count(*)来统计表的记录数。但这一执行就不得了,跑了30多分钟都没出结果,最后只有取消查询。后来采取了另一种办法查询记录数。首先说明下解决的办法,使用如下SQL: bash SELECT object_name(id) as TableName,indid,rows,rowcnt FROM sys.sysindexes WHERE id = object_id('TableName') and indid 继续阅读 »
2015-08-29 Eric Wang
Selenium简介 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Chrome等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。 Selenium的优势 据Selenium主页所说,与其他测试工具相比,使用Selenium的最 继续阅读 »
2013-12-15 Robin Wen
目录 Table of Contents {:toc} 文/温国兵 一 什么是读写分离 MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。 当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。可以看下这张图: 二 读写分离的好处 增加冗余 增加了机器的处理能力 对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。 三 读写分离提高性能之原因 物理服务器增 继续阅读 »
2017-05-12 Lanffy
现象 今天遇到一个慢查询,查询日志找到慢查询语句是这样的: sql select * from convert_test where areacode=0001 and period>='20170511' and period<='20170511'; 继续阅读 »
2015-02-09 walter lee
1.简介 infobright是一个基于MySQL的数据仓库系统,内部是没有索引,采用的Knowledge Grid来组织数据。基本特征如下: 查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍  存储数据量大:TB级数据大小,几十亿条记录  高压缩比:理论上是40:1,在我们的项目中为10:1,极大地节省了存储空间  基于列存储:无需要物化视图、复杂的数据分区策略、索引  适合复杂的分析性SQL查询:SUM, COUNT, AVG, GROUP BY 没有特殊的数据仓库摸(比如星形模型、雪花模型)要求 和众多的BI套件相容,比如Penta 继续阅读 »
2016-09-24 Robin Wen
文/温国兵 Table of Contents {:toc} 0x00 背景 A 业务日增 1500W 数据,采用 MySQL 分区存储。该分区表按照时间分区,每天一个分区。随着时间的推移,单表数据越来越多,占用空间越来越大,由此带来如下的不便:第一,单机磁盘容量有限,需要定期清理历史数据;第二,MySQL 对子查询、复杂查询支持不友好,在庞大的数据量下性能急剧下降,导致前端报表得出结果延时。为了永久存储数据,并且提升查询性能,便有了如下的技术方案选型。 0x01 综述 目前的大数据方案纷繁复杂,找到合适的不是易事。我们调研了如下产品:Infobright、InfiniDB、Greenplum、Citus、Presto、Im 继续阅读 »
2014-12-07 Robin Wen
Table of Contents {:toc} 文/温国兵 问题 现想建立一个数据中心,包括运维采集信息、业务数据、其他业务数据等,建立一个集群搞定,数据量大,写入非常多,查询也非常多。请教。 我应该建什么样的集群合适,面对高并发,扩展性等问题。是否有什么建议,谢谢。 我考虑cluster,因为可以添加很多节点,这样各种业务的各种数据,我可以分布到节点上去,把他们查询比较多的,做成NDB引擎。 我的分析 你好: 看了你的问题,从我的认知角度,做如下分析: 基于NDB的MySQL Cluster很不可靠,绝大多数公司都已经弃用。既然Cluster经不起市场检验,我们也没有必要使用它; 而目前企业使用较多的是复制,主主复制 继续阅读 »