`
丁林.tb
  • 浏览: 790009 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
    被问到一个问题:MySQL中varchar最大长度是多少?这不是一个固定的数字。本文简要说明一下限制规则。 1、限制规则 字段的限制在字段定义的时候有以下规则:   a)                  存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到
本文简要说明InnoDB的Buffer Pool(BP)的结构、基本运行方式和策略。   1、LRU的基本形态        由于涉及到淘汰机制,Buffer Pool (BP)内需要一个LRU链。这个LRU链表的基本形态如下:    
    今天研究MySQL主从同步的同事问了一个问题,如果InnoDB写完ib_logfile后,服务异常关闭。会不会由于主库能够根据ib_logfile恢复数据,而由于bin-log没写导致从库同步时少了这个事务?或者反之,bin-log写成功,而ib_logfile没有写完,导致从库执行事务,而主库不执行? 这会导致主从不一致。 本文简要说明下这个问题。   1、              写入流程 源码sql/handler.cc:
ib_logfile是InnoDB的事务日志文件。本文简要说明其写入时机、写入策略及如何保证数据安全。     1、              基本概念 a)        ib_logfile文件个数由innodb_log_files_in_group配置决定,若为2,则在datadir目录下有两个文件,命令从0开始,分别为ib_logfile0和ib_logfile.
应元同学说要系统介绍一下THD类。我表示这个类太大,如果只是将字段意义依次列出意义不大,最好是碰到问题将相关的字段再说明,能关联更多信息。最近的一个patch中刚好碰到user_connect(好吧,是误用), 就介绍一下。   1、              字段说明 THD::user_connect字段是USER_CONN类型,声明在sql/structs.h. 其作用是记录当前连接用户的信息。结构如下:
这个问题是从被问到information_schema.user_privilege的IS_GRANTABLE字段问题开始查起的,就先从user_privilege表的显示规则说起。   1、              IS_GRANTABLE字段 用root账号执行如下语句(本文中grant后都接flush privileges, 不赘述)
前一篇文章末尾提到InnoDB快速修改字段长度。其实用场景在于,在设计表时,若需要预留varchar类型字段,还无法确定实际需要的长度。而当需要启用到预留的字段时,表中可能已经有很多数据,此时要根据需要修改字段长度, 若能够不需要重做数据,则能够减少这个修改操作对线上服务的影响。   几点说明 1、  注意到这里适用的是varchar类型, char类型不在本文讨论范围内。实际上,由于varchar类型字段数据并不是直接存储在聚簇索引中,才使得快速修改成为可能。而char类型改变长度至少要将整个聚簇索引重做,因此不能做到“不修改数据”
最近被问到一个问题,InnoDB表,只修改一个字段的名字,定义不修改,是否有快速方案。 这个需求的意义来源于,在表设计初期可以预留一些字段,但在预留字段投入使用时,最好能够赋予一个有意义的名字以方便使用。   复现 以下实验基于5.1.48版本。 创建一个简单表   CREATE TABLE `t` (   `c1` int(11) DEFAULT NULL,
最近有人问我MySQL中一个字段不论=NULL还是<>NULL都匹配不了数据,是在框架层实现的还是在存储引擎层实现的,我说你看看如果InnoDB表和MyISAM表都有这个现象,那就比较可能是在框架层。 当然这个答案跟没有回答一样,我们可以从代码上看看具体的实现部分。   1、              现象描述 表结构
最近实现的两个patch都使用到了MySQL内置的hash结构。这个结构在MySQL框架层中被多处使用,理解它可以方便代码阅读。 1、             总体 InnoDB中也有自带的HASH表, 本文中介绍的是MySQL框架层的hash表。 其定义的头文件在include/hash.h,实现位置mysys/hash.c。内部存储数据使用了动态数组DYNAMIC_ARRAY。
函数buf_page_is_corrupted (innodb_plugin/buf/buf0buf.c)这个函数,是在InnoDB中获取page数据后,对page作校验,判断内容是否损坏。 在压力测试中发现,innodb.so最耗费cpu的就是这个buf_page_is_corrupted。        Percona对这个函数作了优化。本文介绍与此有关的配置、优化原理以及进一步的优化空间。(当前版本5.1.48 innodb-plugin 1.0.9)
在余老大(http://blog.yufeng.info/)的指引下开始学习SystemTap了。 最近要追查MySQL中一个耗时函数的调用栈,刚好用到这个神器。在1.3版本中自带的tapset中有 print_ubacktrace 和 sprint_ubacktrace 这两个函数。输出的格式是 “函数名+地址 [进程名]“。
本文说明一下MySQL中不支持欧元字符的原因及解决方法。     1、              问题描述 在mysql中插入的字符串中若包含欧元字符(€),会发现该字符及以后的字符串都变得“不可见”。实际上这里并非不可见,而是根本没有进入数据库中。简单描述步骤如下: root@test 05:15:41>create table t(c ch
    最近在坛子里还看到说到Y和~的问题,不知道mysql官方的bugs里面安排到什么时候解决这个bug。这里描述一下,说明一下原因。   1、              问题描述 mysql> create table t (c char
Information_schema是MySQL自带的信息数据库。里面的“表”保存着服务器当前的实时信息。 最近实现的一个patch,是要在数据库中增加一个统计, 统计结果以表的形式呈现,因此必须在information_schema库中增加一个表,需要了解这些表 ...
Global site tag (gtag.js) - Google Analytics