[MySQL 版本差异] 丢失frm文件之后drop database的不同结果分析

二月 22, 2013 by · 1 Comment 

背景
今天在讨论frm丢失后drop database失败的问题。简单复现如下。假设test库中有两个表t1, t2,执行如下脚本:

bin/mysql -uroot –socket=run/mysql.sock   -e ”
drop database if exists test2;
create database test2;
use test2;
create table t1 like test.t1;
create table t2 like test.t2;

rm -f data/test2/t1.frm; Read more

原创文章,转载请注明: 文章地址[MySQL 版本差异] 丢失frm文件之后drop database的不同结果分析

MySQL数据库的字符集和copy_and_convert 字符集不同导致CPU资源额外消耗

一月 7, 2013 by · 1 Comment 

关于copy_and_convert
在对MySQL做业务压力测试的时候,我们在perf结果中发现 copy_and_convert 是一个耗费cpu的操作。这个函数的意思,就是在字符集之间做内容转换。
如果源和目标的字符集相同,就可以直接用memcpy,这显然比做字符集转换(按字节或字长拷贝更快,和节省cpu)

当整个系统是CPU瓶颈时,我们希望能够减少这种cpu消耗。

一次查询涉及的拷贝
如果我们执行一个简单的select语句,会涉及到两部分的内容:metadata和data。MySQL的返回包是能够“自解析”的,也就是说不仅有内容,还有描述信息。这些描述信息我们称为metadata。

在将这两部分信息返回给客户端的时候,就涉及到字符串拷贝,如果源字符集和目标字符集不同,就需要作转换。 Read more

原创文章,转载请注明: 文章地址MySQL数据库的字符集和copy_and_convert 字符集不同导致CPU资源额外消耗

MySQL数据库从load data引发的死锁说起

十月 16, 2012 by · 7 Comments 

一个线上项目报的死锁,简要说明一下产生原因、处理方案和相关的一些点.
1、背景
         这是一个类似数据分析的项目,数据完全通过LOAD DATA语句导入一个InnoDB表中。为方便描述,表结构简化为如下:

Create table tb(id int primary key auto_increment, c int not null) engine=innodb;

导入数据的语句对应为
Load data infile ‘data1.csv’ into table tb;
Load data infile ‘data2.csv’ into table tb; Read more

原创文章,转载请注明: 文章地址MySQL数据库从load data引发的死锁说起

MySQL数据库中like语句及相关优化器tips

九月 27, 2012 by · 2 Comments 

背景

         MySQL中在对某个字段做包含匹配时可以用like

先看这个结构和结果

 

CREATE TABLE `tb` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `user_id` bigint(20) DEFAULT NULL,  `title` varchar(128) NOT NULL,

  `memo` varchar(2000) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `title` (`title`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

mysql> explain select * from tb where title like ‘%abcd%’;

+—-+————-+——-+——+—————+——+———+——+——+————-+

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+—-+————-+——-+——+—————+——+———+——+——+————-+

|  1 | SIMPLE      | tb    | ALL  | NULL          | NULL | NULL    | NULL |    1 | Using where |

+—-+————-+——-+——+—————+——+———+——+——+————-+

1 row in set (1.65 sec)

  Read more

原创文章,转载请注明: 文章地址MySQL数据库中like语句及相关优化器tips

MySQL5.5数据库复制搭建报错之Could not initialize master info structure

九月 26, 2012 by · 5 Comments 

导读

鉴于MySQL5.5数据库产品的性能提升不明显,软件产品稳定性不佳,且新增加的功能也不足突破,所以生产环境中只有几套应用使用MySQL5.5版本支撑,以培养与掌握MySQL5.5的经验和技术,所以个人对MySQL5.5系列的实战也不多。现有一个项目,因服务器配置的特殊性,以及业务特点、数据容量、数据访问等也非常特殊,不得不考虑采用MySQL5.5,且国内某mysql服务提供商技术人员指定要求的版本号为MySQL5.5.27。综合上述信息导致今天无意碰到一个MySQL数据库复制搭建过程中出现的错误信息,可能其他同行也可能会碰见,特此写一篇技术博文分享给大家。

(一)   环境描述

操作系统:Linux x3755-31 2.6.18-308.el5

硬件配置:2*8Core CPU,6*SAS*15K*600G,RAID1+0,256G MEM

Read more

原创文章,转载请注明: 文章地址MySQL5.5数据库复制搭建报错之Could not initialize master info structure

MySQL数据库主从复制加速工具Transfer2.0 发布啦

九月 3, 2012 by · 4 Comments 

背景

       Transfer是一个主从多线程同步工具,直接patch在MySQL中。2011年开发完成。于去年的12.12上线,并撑住高峰期主从,保证从库无延迟,使得应用能够直接从从库上读数据。

       对Transfer1.0背景有兴趣的同学可以看我以前的一篇博客

新功能

       Transfer第一版本存在两个可改进的点:单表并发和事务支持。 Read more

原创文章,转载请注明: 文章地址MySQL数据库主从复制加速工具Transfer2.0 发布啦

MySQL数据库的IO操作

五月 24, 2012 by · 1 Comment 

导读:
         淘宝丁奇分享的PPT:MySQL数据库的IO操作,详细分享了四块的内容,并且告诉大家如何调整MySQL数据库IO操作相关的参数,给出了详细的选择策略,现替其整理成文章分享与此。
PPT内容提纲:
1.MySQL的文件及简介
2.数据访问流程
3.文件访问模式
4.影响io行为的一些参数和选择策略

1.MySQL的文件及简介 Read more

原创文章,转载请注明: 文章地址MySQL数据库的IO操作

MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程

五月 15, 2012 by · 15 Comments 

导读:
         2012年5月12日,MySQL技术群-北京技术圈的MySQL爱好者,聚集搜狐公司,举办MySQL数据库技术沙龙,本文内容为搜狐DBA团队古雷(外号:古大师,因研究佛学而来)分享的MySQL之SQL执行过程,先整理成文章的方式供大家阅读,古大师也是mysqlops中文网的技术编辑之一。

 

序言:
•不积跬步,无以至千里;不积小流,无以成江海——《劝学》荀子
•吾生也有涯,而知也无涯。以有涯随无涯,殆已——《养生主》庄子

 

Group by

•select name1 from test group by name1;
•从InnoDB存储引擎表读出一条记录,写入临时表,循环往复
•临时表中,group by的key(本例中为name1)
–每个KEY值只有一行记录
–(相同KEY值写入,检测到重复键错误,忽略此错误并继续)
•从临时表中读取记录(全部或KEY)
•排序(filesort)
•发送排序结果

Read more

原创文章,转载请注明: 文章地址MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程

MySQL数据库中order by的实现 和 by rand() 和优化

五月 2, 2012 by · 2 Comments 

有同学上周问了个问题 “MySQL数据库里面的order by rand()”是怎么实现的。我们今天来简单说说MySQL数据库里的order by。

         几种order by的情况
        乍一看这个问题好像有点复杂,我们从最简单的case开始看起。
用这个表来说明:(10w行数据)
Read more

原创文章,转载请注明: 文章地址MySQL数据库中order by的实现 和 by rand() 和优化

Next Page »

知识共享许可协议
作品采用知识共享署名 2.5 中国大陆许可协议进行许可。