MySQL数据库关于一次导入数据提示的MySQL server has gone away

十二月 13, 2012 by · 2 Comments 

背景

这个问题由一个同事问到的一次导入数据引发。一个很常见的操作,将数据从一个表中dump出来,在用mysql < a.sql的方式导入到另一个库的一个表中。

在执行导入的时候,提示 MySQL server has gone away。在追查的时候突然想到会不会是因为max_allowed_packet太小导致的。将max_allowed_packet改大,确实解决了问题。

本文基于在此之后想到的两个问题:

1、              MySQL server has gone away这个提示很不友好,是不是所有的包超过大小都是报这个?

2、              对于出现这种不友好的错误提示,有什么方法定位原因(而不是靠“突然想到”)?

追查1 Read more

原创文章,转载请注明: 文章地址MySQL数据库关于一次导入数据提示的MySQL server has gone away

全球级的分布式数据库 Google Spanner原理

九月 20, 2012 by · 5 Comments 

Google Spanner简介

Spanner 是Google的全球级的分布式数据库 (Globally-Distributed Database) 。Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的数据中心,上万亿的行。更给力的是,除了夸张的扩展性之外,他还能同时通过同步复制和多版本来满足外部一致性,可用性也是很好的。冲破CAP的枷锁,在三者之间完美平衡。

Spanner是个可扩展,多版本,全球分布式还支持同步复制的数据库。他是Google的第一个可以全球扩展并且支持外部一致的事务。Spanner能做到这些,离不开一个用GPS和原子钟实现的时间API。这个API能将数据中心之间的时间同步精确到10ms以内。因此有几个给力的功能:无锁读事务,原子schema修改,读历史数据无block。 Read more

原创文章,转载请注明: 文章地址全球级的分布式数据库 Google Spanner原理

关于MySQL数据库InnoDB存储引擎索引长度限制的tips

九月 19, 2012 by · 3 Comments 

有同学问到MySQL数据库InnoDB存储引擎的索引长度问题,简单说几个tips。

关于3072

大家经常碰到InnoDB单列索引长度不能超过767bytes,实际上联合索引还有一个限制是3072。

Read more

原创文章,转载请注明: 文章地址关于MySQL数据库InnoDB存储引擎索引长度限制的tips

MySQL数据库Filesort过程

八月 20, 2012 by · Leave a Comment 

看mysql源码的收获

•为优化提供理论依据
•为优化提供方向
•学习解决问题的算法和思路

 

filesort algorithm

  • 读取所有需要排序的数据
  • 每行数据
  •     算法1(original):存储排序key和行指针
  •     算法2(modified):存储排序key和select中的字段
  • 每次排序sort_buffer_size能容纳的行数,排序结果写入IO_CACHE对象(不妨称为IO1),本次排序结果的位置信息写入另一个IO_CACHE对象(不妨称为IO2);
  • IO_CACHE超过64k时写入临时文件
  • 当order by有limit n时,只需要把前n条排序结果写入IO_CACHE;
  • 排序KEY长度<=20且排序KEY数量在一千和十万之间时使用radixsort,否则使用quicksort
  • Merge buffer
  • 读取排序结果(算法2直接从临时文件读取结果;算法1从临时文件读取行指针,再从表中读取数据)

Read more

原创文章,转载请注明: 文章地址MySQL数据库Filesort过程

MySQL数据库中QueryCache的锁模型

八月 8, 2012 by · 2 Comments 

有同学在问 MySQL数据库中 QueryCache(QC)的锁是 “全局锁”还是 “表锁”。这里简要说明一下。

1、  QC基本概念

这个是实现在MySQL层(非引擎层)的一个内存结构,基本规则是将满足一定条件的查询结果缓存在内存中,若同样的查询再执行第二次,而且缓存没有失效,则可以直接返回查询结果,无需到引擎获取数据。

几个说明:

a) QC的结构是hash,key为查询字符串的原文,因此若想命中QC,要求查询语句与之前的一模一样,包括大小写必须一致、不能增减空格等等。 Read more

原创文章,转载请注明: 文章地址MySQL数据库中QueryCache的锁模型

遵守GPL协议的MySQL数据库 甲骨文是否有权收费

五月 14, 2012 by · 8 Comments 

导读:

网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也不清楚MySQL开源到底是什么模式,开源=免费嘛?是很多的疑问,MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议(注释:为解决其他企业用MySQL软件牟利或引用了MySQL的源代码而不想开源),虽然www.mysqlops.com也有写关于MySQL版权的来龙去脉,但是这篇文章写更透彻与详尽,特转载ITPUB上的帖子,希望大家能够更加清晰! Read more

原创文章,转载请注明: 文章地址遵守GPL协议的MySQL数据库 甲骨文是否有权收费

MySQL数据库InnoDB存储引擎原生Checkpoint策略及各版本优化详解

四月 23, 2012 by · 2 Comments 

  1. Checkpoint原理

关于MySQL数据库InnoDB存储引擎 Checkpoint的原理,此处不准备介绍,推荐 How InnoDB performs a checkpoint [2]一文,作者详细讲解了Innodb存储引擎的Checkpoint原理。

  1. Checkpoint触发条件

  • 每1S
    • 若buffer pool中的脏页比率超过了srv_max_buf_pool_modified_pct = 75,则进行Checkpoint,刷脏页,flush PCT_IO(100)的dirty pages = 200
    • 若采用adaptive flushing,则计算flush rate,进行必要的flush
  • 每10S
    • 若buffer pool中的脏页比率超过了70%,flush PCT_IO(100)的dirty pages
    • 若buffer pool中的脏页比率未超过70%,flush PCT_IO(10)的dirty pages = 20
    • 每10S,必定调用一次log_checkpoint,做一次Checkpoint

Read more

原创文章,转载请注明: 文章地址MySQL数据库InnoDB存储引擎原生Checkpoint策略及各版本优化详解

2012年数据库技术大会感悟

四月 18, 2012 by · 7 Comments 

导读

2012年4月13日至4月15日为期3天时间,在北京 福朋.喜来登酒店举办第三届数据库技术大会(简称:DTCC),到会技术人员数超过1000人,48位演讲嘉宾,超过200位数据库领域专家到场,一共举办了12个技术专场主题分享,7个圆桌讨论活动,现已顺利圆满地结束,回顾个人参加三界数据库技术大会的经历和心得,为主办方澳新传媒举办下届数据库技术大会(简称:DTCC),给出一点个人建议,也对期待参加的技术和管理人员给出点个人建议。

数据库技术大会(简称:DTCC)和架构师大会的举办,给技术领域提供了一个非常好的技术交流平台,能帮助更多技术人员交换各自的心得体会,也能促成更多技术人员互相认识和结为朋友,同时能促进大家的技术与管理水平的提高,尤其是大家会议期间的私下交流。当然,也有很多互联网公司借数据库技术大会和系统架构师大会的机会,招揽技术人才。数据库技术大会和系统架构师大会,是国内技术含量最高的技术会议,国外有名的甲骨文公司主办的OOW与我们数据库技术大会的技术含量相当。

数据库技术大会和系统架构师大会都是每年举办一届,到目前为止数据库技术大会成功举办了三界,三界技术大会的参会人数成逐年上升的趋势,大致的信息如下:

Read more

原创文章,转载请注明: 文章地址2012年数据库技术大会感悟

MySQL数据库mysql5.5.19版本BUG重现信息与规避技巧(一)

四月 1, 2012 by · 8 Comments 

经过对5.5部分更新列表的阅读与分析,个人建议选择5.5.19,作为我们生产环境MySQL数据库的目标版本,原因如下:
1)mysql-5.5.21为次新版本,刚刚发布的5.5.22中包含的bug修复较少,但使用最新版本风险较大;
2)mysql-5.5.21/22版本中修复的bug数相对较多,可能5.5.20不太稳定;

我们生产环境自建表只有InnoDB存储引擎,且日志采用文件记录方式,则我们使用到的引擎如下:
MEMORY存储引擎、MyISAM存储引擎、InnoDB存储引擎、PERFORMANCE_SCHEMA存储引擎。

现在列出5.5.19部分已知的bug,以及对应处理方式,鉴于篇幅太长,分别列出每个BUG重现测试信息:

Bug #51325,在5.1.20中改进,如果对具体改进方式感兴趣,推荐大家阅读变化列表。
触发条件:innodb_file_per_table=1,引起表删除DDL操作。(大且充满数据的InnoDB缓冲池较明显,注释:innodb_buffer_pool_size、Innodb_buffer_pool_pages_data) Read more

原创文章,转载请注明: 文章地址MySQL数据库mysql5.5.19版本BUG重现信息与规避技巧(一)

MySQL数据库开源软件版本 生产环境GA版本如何选择

三月 31, 2012 by · 4 Comments 

导读
很多技术朋友向我咨询过关于选择MySQL数据库软件产品的版本事宜,他们对于开源软件产品的版本选择没有头绪,不知道从何下手。不过,我们本文主要是介绍开源数据库产品的版本如何选择,如何选择生产环境的MySQL数据库版本?MySQL数据库版本的选择需要经过那些工序?需要注意那些事项?顺道分享下我们DBA团队是如何为生产环境,选择合适的MySQL数据库版本。

 

商业软件研发和发行公司,都会提供经过完整测试,甚至多种用户环境模拟测试及试用之后,才会推出稳定的生产环境版本软件,导致技术人员对于商业数据库软件的选 Read more

原创文章,转载请注明: 文章地址MySQL数据库开源软件版本 生产环境GA版本如何选择

Next Page »

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