|
本帖最后由 dotaddjj 于 2014-3-5 09:48 编辑
接触mysql时间不长,一年不到的样子,由于平时管理还是主要是oracle,mysql自学进度有点慢
1 新特性没过多的研究,自己学习mysql也是从5.5开始,默认存储引擎变成innodb了,5.5之前是myisam,sql语句的优化比较含糊,mysql的优化器也是一种成本的优化器,不过跟oracle的cbo还是有些许不同点的,sql语句的优化还是看执行计划和sql语句的性能消耗等,这个可以通过explain和profile查看,而索引优化这个东西其实跟大多数rdbms差不多:过滤性好的字段、高并发的查询涉及的where条件过滤条件、以及低更新的字段等,至于如何抉择还是折中取舍,这点在基本所有的rdbms中都差不多,当然索引还可以避免排序这些等,而且mysql的优化器对于表连接只有nested loop,这个不像cbo有非常出众的hash join,mysql的大表关联必须在合适的连接字段创建索引,驱动表也必须选择正确,不然这个IO成本是很高很高的,myql也有其自身的hint写法,感觉优化器上mysql和oracle还是有一定的差距的!
2 成本吧,阿里去IOE主要还是成本原因
3 一般备份我们都不能允许停机的,而逻辑备份经常采取的就是mysqldumper,而mysqldumper是单线程的,所以我们一般用的mydumper这个工具,物理备份一般我们用第三方的xtrabackup较多,如果都是innodb的存储引擎话,甚至可以提供在线热备的方式,完全不影响数据的写入,myisam有轻微的锁表时间占用
http://www.dbaxiaoyu.com/archives/1658
mysql的物理备份xtrabackup使用简介
http://www.dbaxiaoyu.com/archives/1643
第三方逻辑备份工具myduper和myloader
当然还有一个mysql特别引以为豪的mysql replication,这个和oracle goldengate一样比较灵活,提供异地容灾、备份、负载均衡等特性,搭建也较简单,维护也不算难。
4 mysql 5.5之后默认的存储引擎就成为了innodb,当然innodb存储引擎则类似于oracle 的IOT(索引组织表)和cluster(簇)的形式,表和主键索引是存储在一起的,当然还可以创建辅助索引,如果innodb是基于主键查询,那是很快的,但是如果不是基于主键查询,则相比myisam会慢点,而且myisam占用的容量也会较低
在mysql replication中我还是建议使用innodb,因为myisam的存储引擎一旦失误失败,这个基本上standby端和primary端数据往往就出现不一致了,这个往往只有重建,而且innodb提供的基于事务的特性确实是值得推荐的,虽然存储容量、读取和写入速度都相比myisam慢一点,当然也是看具体查询的。
由于自己对于mysql学习时间不长,理解难免有偏差,谢谢!
|
|