16

有趣的大小写问题-utf8_bin

utf8_bin字符集 ,该字符集是区分大小写的:
utf8_general_ci 不区分大小写;
utf8_general_cs 区分大小写;
utf8_bin: 将字符串每个字符串用二进制数据编译存储, 区分大小写,而且可以存二进制的内容;
所以在创建test_tmp_log_node_10445__01表的时候指定一下user_id列的属性为:user_id varchar(64) binary则可以区分大小写。

继续阅读全文

15

MySQL数据库InnoDB存储引擎在线加字段实现原理详解

腾讯互娱内部维护了一个MySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能,这个分支我们内部称为TMySQL。该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下介绍下其实现原理。

继续阅读全文

10

MySQL源码:索引相关的数据结构(后篇)

本文介绍MySQL如何发现WHERE条件中的等值表达式,并通过分析这些等值表达式,找到可以使用的索引。在这个过程中,MySQL将递归的访问所有WHERE条件”谓词”,并将等值表达式都存储到KEY_FIELD对象的数组中。

然后遍历该KEY_FIELD数组,并同时对比所有索引列,找到哪些字段是在索引列中出现,这些字段则可能可以使用索引,MySQL将所有这些字段都存储在对象KEYUSE数组中。

最后,对KEYUSE进行处理,包括排序、删除无法使用的索引列。这时KEYUSE数组就是所有可以使用REF的索引列了。

继续阅读全文

06

关于RDS实例CPU超过100%的分析

RDS-mysql由于有资源的隔离,不同的实例规格拥有的iops能力不同,比如新1型提供的iops为150个,也就是每秒能够提供150次的随机磁盘io操作,所以如果用户的数据量很大,内存很小,由于iops的限制,一条慢sql就很有可能消耗掉所有的io资源,而影响其他的sql查询,对于数据库来说就是所有的sql需要执行很长的时间才能返回结果,对于应用来说就会造成整体响应的变慢;所以优化永不止境,既可以帮助你的系统稳定,同时又可以节约你的成本,何乐不为。

继续阅读全文

05

PHP API中,MYSQL与MYSQLI的持久连接区别

php拓展的mysql跟mysqli的长连接一样使用吗?有什么区别?是否重新创建TCP链接的条件,都是HOST、PORT、USER、PASS这些参数吗?在libmysql跟mysqlnd下表现一样吗?在CLI模式跟FPM模式下表现一样吗?mysqli的长连接如何使用呢?在同一个脚本中,mysqli长连接为什么没有使用同一个链接?而又新建了链接呢?

继续阅读全文