note for Mysql
主从复制:
- master主库将sql change写入binary log(二进制文件),即所有的更新sql
- slave从库创建两个线程,一个I/O thread用于连接主库,读取主库的binary log并写入从库的relay log
- slave另一个线程SQl thread,用于读取relay log (中继日志),并执行其中的更新sql使其与master的数据一致
- 主库每次重启都会新建一个binary log
- 中继日志通常都在缓存中,所以开销很小
innoDB & MyISAM:
- 索引结构是B+树,和MyISAM的不同在于innoDB整个数据结构就是一个B+树。而MyISAM的数据文件和索引文件是分开存储的
- B+树的数据结构类似于二叉树,不同处在于B+树的数据都在叶子节点,且对每个节点的子节点数个指针数限制不同,插入删除机制也不同,详情可见http://blog.csdn.net/jesseshen/article/details/6643747
- innoDB支持事务,外键和行级锁,MyISAM只支持锁定整个表
- innoDB不支持全文索引,MyISAM支持
- innoDB不保存表的行数,而MyISAM有一个计数器
- 如果项目读需求更多,MyISAM较适合,索引文件会被压缩,很轻量;而innoDB索引文件和数据文件是绑在一起的,不会压缩
哈希算法-拉链法:
哈希算法是将数据存储在散列表中,key-value的形式,评判哈希函数的方法是散列值和冲突率