
mysql
文章平均质量分 95
cschmin
这个作者很懒,什么都没留下…
展开
-
Undo 日志用什么存储结构支持无锁并发写入?
undo 日志承担着多重职责,需要为 MVCC 和数据一致性服务。相比于 redo 日志,它拥有更复杂的存储结构,和事务有更多的关联。本文从存储结构、写入 undo 日志文件、二阶段提交三个方面介绍了 undo 日志。...原创 2022-07-06 12:44:59 · 617 阅读 · 1 评论 -
Redo 日志无锁化设计并发写入 log buffer
MySQL 8.0 中,多个线程往 log buffer 中写入 Redo 日志,使用了无锁化设计实现并行写入,并且 log buffer 中的日志写入日志文件、刷盘都使用了独立线程,结构复杂了很多,负载比较高的情况下写入效率也大大提升了。.........原创 2022-06-13 14:14:07 · 883 阅读 · 0 评论 -
MySQL 简单查询语句执行过程分析(二)查询准备阶段
本文是查询语句分析文章的第 2 篇,主要讲述一条简单查询语句,在查询准备阶段会干哪些事情?原创 2022-03-01 19:46:26 · 267 阅读 · 0 评论 -
半连接物化的两种策略
IN、=ANY 子查询进行半连接(Semi-Join)优化时,其中一种策略就是`子查询物化`,即生成一张内存或者磁盘的临时表(称为`物化表`),来存储子查询的执行结果,然后`物化表`和`主查询`进行连接,以获取最终的结果集转载 2022-02-17 15:40:10 · 686 阅读 · 0 评论 -
MySQL 数据在连接缓冲区是怎么存储的?
MySQL 连接缓冲区(Join Buffer)是用于提升多表连接查询的速度的,连接查询的执行简化逻辑如下: 从存储引擎中读取驱动表的中的记录,把满足条件的记录存入连接缓冲区 当连接缓冲区满时,循环从存储引擎读取被驱动表的记录 每读取一条被驱动表的记录,遍历临时存放到连接缓冲区中的驱动表的记录 判断被驱动表和驱动表的记录是否匹配,如果匹配,且被驱动表是连接操作的最后一个表,则把匹配的记录发送给客户端(只发送客户端需要的字段)原创 2022-02-17 15:29:45 · 1088 阅读 · 0 评论 -
查看mysql编译选项
<br />假设mysql安装目录为/opt/mysql<br /> <br />查看编译选项的命令为 cat /opt/mysql/bin/mysqlbug | grep CONFIGURE_LINE<br /> <br />另:可以使用mysql_config命令查看mysql的一些基本信息,如下<br /> --cflags [-I/usr/include/mysql -mcpu=i486 -fno-strength-reduce]<br /> --incl原创 2010-06-08 17:55:00 · 3443 阅读 · 0 评论 -
MySQL的DATETIME, TIMESTAMP类型列的默认值
创建MySQL表时,如果要给DATETIME, TIMESTAMP类型的列指定插入记录的时间作为默认值的话,可以使用CURRENT_TIMESTAMP,如CREATE TABLE t_01 ( `id` INT NOT NULL AUTO_INCREMENT, `dt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, primary key (`id`)) engine = MyISAM default character set utf8;也可以指定在更新记录的原创 2010-11-16 15:31:00 · 1458 阅读 · 0 评论 -
MySQL的char和varchar比较
1、char类型的列占用固定字节,为创建列时指定的字节,如果插入的值小于指定字节,则在尾部填充空格2、varchar类型的列只占用实际存储内容的字节数,另外会有1个字节或两个字节的前缀,用于指定保存内容的实际长度(前缀长度取定义的字段长度,当定义长度大于255字节时,前缀长度为2字节)3、char类型的列在检索时会去年尾部空格4、varchar类型的列在检索时不会去年尾部空格,遵循SQL标准原创 2010-11-16 16:17:00 · 636 阅读 · 0 评论