mysql 内核分析

先把 http://forge.mysql.com/wiki/MySQL_Internals 上面的文章看一下,就明白了mysql大致的结构和执行流程,

 

mysql从功能上来讲,并不完善,适用于OLTP,不适用于OLAP,在开源数据库而言,对于重要的数据存储的话,而是建议采用postgresql

 

下面把mysql和postgresql从内核级做一些对比分析,找出mysql快,但功能不足的方面.估计要很长时间才能写完,每天看到哪写到哪.

 

1.mysql是线程级别的,postgresql是进程级别的,从操作系统方面讲,mysql速度快

 

2.mysql不像关系型数据库有专用的系统表,它的系统表主要就是host,user,plugin等少数几个,表结构也是存储在frm中,没有像postgresql中有pg_class,pg_database,pg_attribute,pg_view等这样专有的系统表,mysql建立数据库也只是创建一个以数据库名字为命名的文件夹,安全性也差,

 

3.封锁的话,mysql里面大量采用了全局封锁,效率肯定低,只要有一个查询执行时间长,将大大影响系统整体性能,所以只适用于OLTP,另外它是一次性获得所有封锁的两阶段封锁协议,也没有死锁检测机制.

 

4.日志方面有两种,一种是statement,也就是只记录执行的语句,这样是速度快,但是恢复起来肯定慢,而且它的文档中说,这种日志方法并不保证一致性,另一种是新引进的row的记当方法,也就是记录元组级的修改,这就是postgresql比较相近,但是有没有像PG的CRC校验还需要看源码.

 

5.cluster这个mysql只有本系统提供的,而postgresql有pgcluster,pgplool等多种选择,

 

6.事务,

 

7.内存缓冲池

 

8.索引

 

9.Replication:mysql有两种,一种是基于statement的,这种实现比较简单,但是需要全局锁,另一方面于对一些特定函数如date,random等主从可能结果不一样,而且主结点解析,重写之后,副结点还要执行相同的过程.postgresql是通过截on_insert,on_update,on_delete三个函数实现的,主副之间传递的是内部结构,副结点得到之后可以直接存储.mysql新的根据row方式存储的,应和PG的机制差不多.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值