Percona Live 2012(MySQL Conference)上的一些不错的Session

  • Percona的Vadim介绍MySQL与SSD交互的相关知识,对于SSD的一些基础知识的介绍很不错,有助于朋友们深入理解。
  • Nokia与Pythian的工程师介绍MySQL下各种HA方案的设计与实现,以及在现实场景中的应用
  • Baron Schwartz介绍如何对MySQL数据库进行Troubleshooting,在MySQL的这方面,Baron应该是权威,有兴趣的同学可以进一步阅读下Percona写的两篇关于性能与诊断的paper。
  • PalominoDB的rene cannao介绍MySQL的一些基本的性能测试与剖析的工具与脚本,非常实用
  • 还有一篇介绍Etsy的Sharding相关的ppt写的很不错,值得做数据库中间件以及想要做Sharding的相关数据架构师、系统架构师参考
  • Etsy Shard Architecture

    ————————————————-华丽的分割线—————————————

  • TukoDB的Btree架构,以及Tukodb如何实现高性能的数据插入,以及等性能的数据查找
  • 另:本ppt的作者Leif Walsh之前在RethinkDB工作。写出过几篇非常有质量的论文,可惜后来RethinkDB将论文给雪藏了。

    Oracle数据库相关的书籍推荐

    concepts guide(11g)
    By Thomas Kyte
    由Tom担纲编写的11g的Concepts guide作为第一本书籍,是引领你进去Oracle世界的最基础的一本书籍,建议所有的人都对此做深入阅读,我了解的有些朋友对此文档有3-5遍以上的阅读。重点:oracle数据库的体系结构、内存架构、oracle的基本数据对象、并发控制与隔离级别相关内容,Undo与Redo的内容。
    backup and recovery guide
    备份与恢复是Oracle数据库也是关系数据库最关键的部件,深入阅读此文档,可以帮助你了解Oracle是如何设计redo、undo、数据格式,以及恢复过程中的一些细节内容。
    Expert Oracle Database Architecture: Oracle Database 9i, 10g, and 11g Programming Techniques and Solutions
    Tom编写的Oracle入门书籍,主要还是进程架构、内存架构、redo、undo、并发控制、绑定变量,以及如何在此基础上做高性能高可扩展的系统。
    Practical Oracle8i™: Building Efficient Databases
    Jonathan Lewis革命性的书籍,从应用设计以及Oracle系统设计的角度教你如何使用Oracle数据库,第一章从原理上告诉你Oracle如何进行数据变更,如何实现ACID,个人认为第一章的内容就值得我从Amazon买回这本书了。后面对于索引设计、应用设计都有详细的描述。
    Relational Database Index Design and the Optimizers
    如何针对关系型数据库设计索引,如何基于索引做性能的估算,如何预估可能的执行计划。个人认为深入阅读这本书,就可以设计好所有关系型数据库的索引,从而可以做一个出色的数据库DBA。这是我在支付宝内部要求所有兄弟都必须深入阅读的书。
    Oracle Core: Essential Internals for DBAs and Developers
    Jonathan Lewis的另一本革命性的书籍,是前面一本书第一章的扩展,从原理上解释Oracle做了什么,本质上就是DBWR、CKPT、LGWR几个核心进程的交互,以及Oracle数据格式上如何支撑这些,如何做到高效的处理,MVCC的实现与优势。
    Scaling Oracle8i™: Building Highly Scalable OLTP System Architectures
    从硬件架构、性能测试、Oracle系统设计等综合的角度来考虑如何设计高可扩展的系统。
    Troubleshooting Oracle Performance
    我与Fenng、胡怡文一起翻译的书。这本书从整个应用Stack的角度考虑如何诊断Oracle数据库的性能,重点还在于Oracle性能调优的方法论以及一些具体涉及到的技术点。

    ITPUB北京数据库大会DTCC 2012演讲ppt

    我在DTCC 2012上的演讲内容,主要是关于性能优化的方法论,涉及部分可伸缩系统设计,以及一些常见的优化场景与对应的手段,在使用这些优化手段时需要特别注意的问题。

    Oracle 数据库的Licence List Price(单位:$)

    Processor License Software Update License & Support
    Enterprise Edition 47,500 10,450.00
    NoSQL Database Enterprise Edition 10,000 2,200.00
    Enterprise Edition Options:
    Real Application Clusters 23,000 5,060.00
    Real Application Clusters One Node 10,000 2,200.00
    Active Data Guard 10,000 2,200.00
    Partitioning 11,500 2,530.00
    Real Application Testing 11,500 2,530.00
    Advanced Compression 11,500 2,530.00
    Database Enterprise Management
    Diagnostics Pack 5,000 1,100.00
    Tuning Pack 5,000 1,100.00
    Database Lifecycle Management Pack 12,000 2,640.00
    Data Masking Pack 11,500 2,530.00
    Test Data Management Pack 11,500 2,530.00
    Cloud Management Pack for Oracle Database 3,000 660

    摘自 Oracle Price List

    推荐阅读--20110825

    1. Redo By Jonathan Lewis

    http://jonathanlewis.wordpress.com/2011/08/19/redo-2/

    Jonathan Lewis根据来自Tony Hasler的一篇帖子中遇到的问题, 进一步测试,,发现Oracle的Redo机制在ACID设计上的缺陷所做的深入的讨论..

    问题的根本点是..
    Oracle在进行提交的时候,需要处理3件事情.
    1. 将提交的信息持久化到磁盘
    2. 通知其它进程此事务已经提交,后续的查询可以查看最新的记录.
    3. 通知处理当前事务的进程,此事务已经提交.

    Oracle该如何平衡这三个选项..

    目前的实现是, 在当前应用发出commit指令并等待log file sync时,,lgwr会接手进行日志的持久化(也即满足ACID的D),,其它会话会看到当前会话已经提交的数据(此处为ACID中的I所指代的READ Committed 隔离级别), 也就是其它会话已经看到此事务为已经提交,,而只有当前会话认为事务还未提交完成,,在正常情况下,,其它会话认为已经提交与当前会话认为已经提交之间的时间间隔会比较小(一般就一次log file parallel write的时间,在0.1-10ms之间), 而当LGWR由于某些原因没有办法正常写日志时(如此blog中的描述,lgwr suspend,或没有可用的在线日志),,这个时间差就可能造成比较大的影响,,主要影响是如果有其它DB会依赖于此DB中的一致性的状态, 并且在当前主机crash的情况下,,会出现违反ACID中的D或I的情况,,如果所有的状态都是依赖于当前数据库,,则不会造成影响,,因为后续的会话依赖的状态以及依赖此状态所做的变更,,必须要等LGWR的下次持久化才会变成持久的变更.

    2. 推荐一组关于JBOSS连接池的研究的帖子(来自我们支付宝DBA团队的兄弟).
    JBOSS连接池1-PreparedStatementCache参数的作用及设置
    JBOSS连接池1-PreparedStatementCache参数的作用及设置

    JBOSS连接池研究的后续内容请大家关注dbafree的后续内容.