上周去参加了2016 DTCC(数据库技术大会),会议总共持续3天,议题很是多,我这里搜集了最新的公开的PPT内容,有兴趣的同窗能够下载看看,PPT合集下载连接为:http://pan.baidu.com/s/1i4XDESX。如下内容是我对听的几个议题的一点总结,并欢迎讨论。mysql
《时间序列存储引擎》git
携程的同窗作了一个MySQL时序数据库引擎(Ctrip fast logging),用于实时收集服务器的状态信息。时序数据的特色每条信息都包含了时间戳,而且是顺序追加的,并且这些信息通常不会发生变动,PPT的内容主要是讲如何基于Mysql的框架实现一个存储引擎,包括相关接口的实现。因为底层存储格式很是简单,只支持顺序插入,相对于innodb的B+树很是简单,所以效率也比较高。但我的感受既然是收集服务器状态信息,性能不会成为瓶颈,用普通的innodb或者myisam足以知足需求,或者对于这种流水型做业用已有方案基于Hbase的OpenTSDB也能知足需求,我想作这个引擎的最大收益应该是积累引擎开发经验吧。github
《揭开SQL优化的盖头来》
李海翔@那海蓝蓝老师从理论和实践上讲了一条SQL语句的编译和优化过程,并介绍了经常使用的优化技术,包括逻辑优化和物理优化。逻辑优化主要包括子查询上拉,等价谓词重写和外链接消除等;物理优化包括表链接时使用索引,利用索引扫描,group by利用索引,多表链接空间搜索等。最后介绍了各个经常使用数据库的优化器功能对比。整体来讲,PPT的质量仍是很不错的,对于DBA同窗了解SQL执行原理很是有帮助。sql
《数据库事务处理原理与实例剖析》
华为的同窗讲了事务的ACID的原理,并结合PostgreSQL介绍了MVCC机制,锁机制和故障恢复机制,基本上讲清楚了事务的原理和实现,比较偏理论,值得仔细体会。
数据库
《华泰证券数据库分布式架构》
华泰的首席DBA讲了他们的Oralce迁移到MySQL后的高可用方案,经过引入中间件做为路由实现分库分表和读写分离,实现数据库集群水平扩展能力。此外,它们还引入了Galara Cluter集群技术,真正的强同步,数据彻底不丢失,也就是PXC(Percona XtraDB Cluster)方案,据我了解,目前去哪儿公司也在用这种架构。这种架构强依赖于网络,因此他们的集群都是在一个机房的,对于咱们同城的主备方案有参考意义,可是跨地域网络不稳定的场景下,感受这种方案不太合适。服务器
《RocksDB》
facebook工程师详细讲解了RocksDB的组织结构和存储原理,RocksDB是对LevelDB作了改进,目前做为MySQL的一个引擎(MyRocks)普遍应用于facebook生产环境中,而且MariaDB也支持引入了MyRocks引擎。RocksDB底层数据采用LSM(Log Structed Merge) Tree,相对于传统关系型数据库采用的以page为单位组织的B+树结构,更节省磁盘空间(B+树的page中存在空洞,空间利用率有限),控制写放大问题也更好(好比B+树中,更新一条记录,可能须要写入一个或多个Page)。RocksDB支持一次获取多个K-V,还支持Key范围查找,架构自己对数据自动作到冷热分离,此外RocksDB支持HDFS。我的感受在省成本方面,RocksDB引擎是一个能够考虑的方向。MyRocks已经开源,git地址:https://github.com/MySQLOnRocksDB/mysql-5.6网络
《游戏云存储--TSpider分布式数据库》
腾讯的同窗讲了他们的中间件方案,采用TSpider引擎的MySQL服务器做为代理,实现分库分表和读写分离的功能。TSpider是基于开源的引擎Spider定制,对性能和稳定性作了必定的优化。因为TSpider实际是Mysql的框架的一个引擎,所以它自然具有了Mysql处理复杂SQL的功能,这个是相对于其它中间件的一个优点。TSpider至关于中间服务层,自身不存业务数据,只存分区键信息和路由信息,TSpider对进行转发,并聚合查询结果。架构