mysql | idouba

Archive | mysql RSS feed for this section

Mysql 索引原理(MyISAM&InnoDB)

一、要点

在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。

二 、MyISAM的索引

MyISAM的索引方式是“非聚集”索引。MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址

1. MyISam主索引

[caption id="attachment_1269" align="alignnone" width="300"]myisam-primary-index MyISAM表的主索引(Primary key)[/caption]

 

如图一共有三列,假设我们以Col1为主键,以col1构造B+树。B+树的叶子节点上保存的是该记录的地址,可以理解为该行数据的物理存储位置。

2. MyISam辅助索引

在MyISAM中,主索引和辅助索引(Secondary[......]

阅读全文

Tags: , ,

Comments { 0 }

mysql 体系和模块协作

全文摘录自《MySQL性能调优与架构设计》书中的关于mysql服务器架构部分的描述。感谢作者。说实话,可能是为了让更大众的和我一样的工程师了解主要思路,作者讲的并不像一个产品白皮书中介绍一个数据库系统的功能那么详细,甚至说不那么专业。但是真真切切的说,讲清楚了。更重要能让我决定把全文archive下来的原因是,正因为介绍的不是那么细致,也就是层面有点高,会发现这计划不是mysql一个数据库 系统这样在工作,其他的数据库系统(服务方式工作的,如orale,mssql等)也都是这种方式在工作。

Server 根据配置文件启动,工作线程、数据文件,工作日志。这些其实是一个向外提供服务的系统必备的组件,其配合方式也是几乎类似的,不要说和这些关系数据库系统间的类似,Hbase等其他数据(库)服务也无不是这样工作的。而其中的query cache,执行优化器等也是在数据库这类系统中几乎必备的组件[......]

阅读全文

Tags: , ,

Comments { 0 }

mysql join原理和优化

一、关于

在MySQL 中,只有一种Join 算法,就是大名鼎鼎的Nested Loop Join,他没有其他很多数据库所提供的Hash Join,也没有Sort Merge Join。顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与Join,则再通过前两个表的Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复。

二、原理

参考的query为:

在作者前面的例子中,其中在user_group的group_id、user_id列上,在 group_message的 id列上,在group_message的group_id列上,在group_m[......]

阅读全文

Tags: ,

Comments { 0 }