当前位置:首页 > 开发 > 数据库 > 正文

高性能mysql 之 选择存储引擎(一)

发表于: 2015-06-11   作者:annan211   来源:转载   浏览:
摘要: 1 没有特殊情况,应尽可能使用InnoDB存储引擎。   原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她   被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃   恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常


1 没有特殊情况,应尽可能使用InnoDB存储引擎。
  原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她
  被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃
  恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常特别的原因需要使用其他的存储引擎,否则应该优先使用InnoDB
  引擎。
  oracle 投入了大量资源,使得InnoDB引擎的性能得到了质的飞跃,不仅在单核,现在已经扩展到24、32甚至更多核的
  系统中也表现良好。
 
  InnoDB 采用MVCC来支持高并发,并且实现了四个标准的隔离级别,其默认级别是可重复读。并且通过间隙锁防止幻读的出现。
 
  InnoDB 采用聚簇索引,对于主键查询有很高的性能。不过他的二级索引必须包含主键列,因此主键列应当尽可能的小。
 
  InnoDB 内部做了很多优化,包括从磁盘读取数据是采用的可预测性预读,能够自动在内存中创建hash索引以加速度操作的自适应哈希
  以及能够加速插入操作的插入缓冲区等。
 
  InnoDB 支持热备份。
 
  同样广泛使用的是 MyISAM存储引擎,MyISAM不支持事务,没有修复和崩溃恢复能力,需要手工操作
  MyISAM 对整张表加锁 而不是针对行,读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁。
 
 
2 如何选择存储引擎
  一般情况下,InnoDB都是正确的选择,除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,
  否则都应该优先选择InnoDB引擎。当然,如果不需要用到InnoDB的特性,同时其他引擎的特性能够更好地满足需求,
  也可以考虑其他存储引擎。举个例子,如果不在乎可扩展能力和并发能力,也不在乎数据丢失问题,
  却对InnoDB的空间占用过多比较敏感,这种场合下选择MyISAM就比较合适。
 
  除非万不得已,否则不建议使用多种存储引擎,否则可能带来一系列复杂的问题以及一些潜在的bug和边界问题。
  存储引擎层和服务器层的交互已经比较复杂,更不用说混合多个存储引擎了。
 
  如果应用真的非常需要不同的存储引擎,请先开率以下几个因素
  1 事务
  2 备份
 
  不要轻易相信 MyISAM 比 InnoDB 快的经验之谈,在很多已知的场景中,InnoDB的速度都可以让MyISAM望尘莫及
  尤其是聚簇索引或者需要访问的数据都可以放入内存中的应用。
  MyISAM 引擎在一开始可能没有任何问题,但随着应用压力的上升,则可能迅速恶化,各种锁争用、崩溃后的数据丢失等问题都会随之而来。
 
  使用InnoDB 需要尽量避免select count(*) 此类的语句,  尤其是当数据规模不断增大的时候。
 
   mysql 单台服务器的数据量 一般保持在3-5T,10T以上就可能需要建立数据仓库,infobright 是mysql 数据仓库最成功的解决方案。也有一些大数据仓库不适合
   infobright ,却适合TokuDB.
 

 
 
 
 
   

高性能mysql 之 选择存储引擎(一)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
MYSQL的引擎不是一般的多, 共有7种存储引擎。 每一种引擎都是完全不同的, 都是为了满足特定应用的
MySQL服务器由连接管理、查询缓存、SQL解析器、查询优化器以及数据存储引擎组成。其基本架构如下图
在项目刚开始以下两张表都是MyISAM,也就是在表创建时两张表的存储引擎同为MyISAM,如图 应用中用到了
  数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中称为存储引擎。   常用的存储
概述 后台线程 默认情况下InnoDB存储引擎的后台线程有7个---------4个IO thread, 1个master thread
表类型(存储引擎)的选择 MySQL5.5支持的存储引擎及其特性 mysql> SHOW ENGINES\G **************
随着信息的飞速增长,对信息的存储会越来越重要,目前许多公司都在做将存储去O,为了节约存储使用Or
<?php /** * secache * * @version $Id: secache.php 3 2009-02-14 15:00:41Z flaboy.cn $ * @li
MySQL中的数据用各种不同的技术存储在文件(或者内存)中; 每一种技术都使用不同的存储机制、索引
http://menglimengwai.iteye.com/blog/464667 MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号