随笔分类 -  MySQL

摘要:前几天开发童鞋反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下。以免以后有童鞋遇到类似问题百思不得其解,难以入眠,哈哈。废话少说,进入正题。 拿到问题后,首先查看现场,发现问题表的中记录的最大值比自增列的值 阅读全文
posted @ 2014-08-15 15:18 天士梦 阅读(11313) 评论(1) 推荐(4) 编辑
摘要:互联网网站应用大多采用mysql作为DB存储,限于mysql单机性能的瓶颈,为了支撑更大容量和更大的访问量,dba一般通过建立分布式集群,让多个mysql共同提供服务。所谓的mysql分布式集群,实质就是将原有的数据拆成多份,放在多个mysql数据库上存储,应用通过中间层路由到对应的数据库分片,访问 阅读全文
posted @ 2014-07-22 10:30 天士梦 阅读(3025) 评论(1) 推荐(2) 编辑
摘要:大家知道,互联网业务是典型的OLTP(online transaction process)应用,这种应用访问数据库的特点是大量的短事务高并发运行。因此任何限制高并发的动作都是不可接受的,甚至会给网站带来灾难。对于数据库而言,高并发通常与事务ACID是一对矛盾体,为了保证事务的ACID特性,必需用一 阅读全文
posted @ 2014-07-06 12:31 天士梦 阅读(2181) 评论(0) 推荐(1) 编辑
摘要:想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状态是在等metadata lock。本文会对mysql 的metadata lock做一个小小的总结 阅读全文
posted @ 2014-07-05 20:39 天士梦 阅读(13523) 评论(0) 推荐(6) 编辑
摘要:场景:主库DB:utf8字符集备库DB:gbk字符集 需求:校验主备数据是否一致,并且修复 校验过程:设置主库连接为utf8,设置备库连接为gbk,分别进行查询,将返回的的结果集按记录逐字段比较。 显示结果:原本相同的汉字字符,数据校验认为不一致。 原因分析:对于主库而已,由于建立连接的字符集为UT 阅读全文
posted @ 2014-05-13 10:43 天士梦 阅读(1459) 评论(3) 推荐(2) 编辑
摘要:前两天遇到一个1205(ER_LOCK_WAIT_TIMEOUT)的错误,弄了半天终于找到原因,掌握原理+细心才能找到罪归祸首。下面我给大家分享下这个问题的分析处理过程,希望对大家有所帮助。接到slave error告警后,看到现场是这样的:slave重做binlog因为锁超时中断,报HA_ERR_ 阅读全文
posted @ 2014-03-07 10:14 天士梦 阅读(21396) 评论(0) 推荐(0) 编辑
摘要:1.隔离级别 (1)读不提交(Read Uncommited,RU) 这种隔离级别下,事务间完全不隔离,会产生脏读,可以读取未提交的记录,实际情况下不会使用。 (2)读提交(Read commited,RC) 仅能读取到已提交的记录,这种隔离级别下,会存在幻读现象,所谓幻读是指在同一个事务中,多次执 阅读全文
posted @ 2014-01-23 00:08 天士梦 阅读(6774) 评论(3) 推荐(1) 编辑
摘要:目前,mysql在互联网行业使用地如火如荼,很多大型网站都在使用MySQL数据库,通过搭建mysql主备集群,实现高性能,高可用的存储方案。mysql集群的共同特性是通过复制来实现主备间的同步,保证主备数据的一致性。这样才能保证读写分离,备库为主库分担压力,提高整个集群的可用性和性能。 为什么需要数 阅读全文
posted @ 2014-01-15 22:30 天士梦 阅读(6281) 评论(2) 推荐(0) 编辑
摘要:本文总结了一些工作常见的sql优化例子,虽然比较简单,但很实用,希望对大家有所帮助。sql优化一般分为两类,一类是sql本身的优化,如何走到合适的索引,如何减少排序,减少逻辑读;另一类是sql本身没有优化余地,需要结合业务场景进行优化。即在满足业务需求的情况下对sql进行改造,已提高sql执行速度, 阅读全文
posted @ 2013-11-26 22:52 天士梦 阅读(2036) 评论(1) 推荐(1) 编辑
摘要:含义:显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL (6)key_len 含义:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度 (7)ref 含义:用于连接查询,表示具体某个表的某列被引用 (8)rows 含义:MySQL根据表统计信息及索引选用情况,估算的找到 阅读全文
posted @ 2013-11-16 16:44 天士梦 阅读(2398) 评论(0) 推荐(3) 编辑
摘要:一般的网站应用中,总会有部分二次数据(处理过的原始数据)展现给前台,比如,拿购物网站来说,购买进口奶粉最多的用户群体;哪类产品消费增长趋势最旺盛;用户的消费历史归类等都是二次数据。由于这部分数据通常是分析后的数据,而且实时性不强,因此这个过程通常是通过离线计算得到。为了展现给前台,需要将这部分数据回 阅读全文
posted @ 2013-09-09 13:57 天士梦 阅读(7345) 评论(0) 推荐(0) 编辑
摘要:上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程。之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称之为内部xa事务(Distributed Transactions),与之对应的还有一个外部xa事务 阅读全文
posted @ 2013-09-01 22:10 天士梦 阅读(5823) 评论(1) 推荐(1) 编辑
摘要:mysql是一种关系型数据库,关系型数据库一个重要的特性就是支持事务,这是区别于no-sql产品的一个核心特性。当然了,no-sql产品支持键值查询,不能支持sql语句,这也是一个区别。今天主要讨论下事务的提交流程,由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交,通过 阅读全文
posted @ 2013-08-26 01:25 天士梦 阅读(6467) 评论(6) 推荐(1) 编辑
摘要:在工作过程中,时不时会有开发咨询几种select count()的区别,我总会告诉他们使用select count(*) 就好。下文我会展示几种sql的执行计划来说明为啥是这样。 1.测试环境 OS:Linux DB:mysql-5.5.18 table:innodb存储引擎 表定义如下: 2. 测 阅读全文
posted @ 2013-08-17 12:08 天士梦 阅读(2139) 评论(2) 推荐(0) 编辑
摘要:要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴。搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可。为了方便调试,也因为vs调试的直观性,我的源码工程是在windows平台下面的,下面进入正题。 在vs环境下 阅读全文
posted @ 2013-08-11 23:34 天士梦 阅读(1962) 评论(0) 推荐(1) 编辑