0x00 Mysql数据库常用存储引擎

Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等。

MyISAM存储引擎

MyISAM是Mysql的默认存储引擎,它支持B-tree/FullText/R-tree索引类型,并且MyISAM的锁级别是表锁,表锁的开销小,加锁快;锁粒度大,发生锁冲突的概率较高,并发度低;表锁适合查询。MyISAM引擎不支持事务性,也不支持外键。

InnoDB存储引擎

InnoDB 存储引擎最大的亮点就是支持事务性,支持回滚。它支持Hash/B-tree索引类型。InnoDB的锁级别是行锁,行锁在锁定上带来的消耗大于表锁,但 是在系统并发访问量较高时,InnoDB整体性能远高于MyISAM。InnoDB的索引不仅缓存索引本身,也缓存数据,所以InnoDB需要更大的内 存。

Memory存储引擎

Memory存储引擎是一个内存级的存储引擎,它将所有数据都存储在内存中,所以它能够存储的数据量是比较小的。而因为内存的特性,Memory存储引擎对于数据的一致性支持教差。Memory的锁级别和MyISAM一样,是表锁;并且不支持事务性。

0x01 如何选择合适的存储引擎

采用MyISAM引擎

  • R/W > 100 : 1并且Update较少 (R/W:读写比)
  • 并发不高,不需要支持事务
  • 表数据量小
  • 需要进行全文搜索

采用InnoDB引擎

  • R/W比较小,频繁更新大字段
  • 表数据量超过千万,高并发
  • 安全性和可用性要求高

采用Memory引擎

  • 有足够的内存
  • 对数据一致性要求不高,如session/在线人数等
  • 需要定期归档的数据

0x02 结语

数据库的选择,数据库存储引擎的选择,以及数据库的优化,就像是一门艺术,它没有好与坏之分,只有适合与不适合。一个项目需要考虑的因素很多,如何去权衡几个因素之间的权重,如何找到一个最优解,真的需要长时间的经验积累,数据库的学习之路漫漫,坚持,再坚持!

原文作者:我才是二亮
原文链接:http://2liang.github.io/2015/08/30/Mysql存储引擎及选择方法/
转载必须在正文中标注并保留原文链接、作者等信息。

Mysql存储引擎及选择方法的更多相关文章

  1. Mysql存储引擎的选择

    Mysql存储引擎概述 mysql的存储引擎是插件式的,用户可以根据需求选择如何存储和索引数据是否使用事务等. Mysql支持多种存储引擎,用户可以选择不同的引擎来提高应用的效率,灵活的存储方案,存储 ...

  2. mysql 存储引擎的选择

    MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性.并发性要求不是很高,选择这个存储引擎非常合适.MyISAM在Web.数据仓储和其他应用环境下最常使用的存储 ...

  3. InnoDB还是MyISAM 再谈MySQL存储引擎的选择

    两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用. 我作为使用MySQL的用户角度出发,Innodb和My ...

  4. mysql 存储引擎的选择你会吗?

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXExMzU1NTQxNDQ4/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  5. mysql 存储引擎 InnoDB 与 MyISAM 的区别和选择

    http://www.blogjava.net/jiangshachina/archive/2009/05/31/279288.html     酷壳 - MySQL: InnoDB 还是 MyISA ...

  6. MySQL开发篇,存储引擎的选择真的很重要吗?

    前言 谁说MySQL查询千万级别的数据很拉跨?我今天就要好好的和你拉拉家常,畅谈到深夜,一起过除夕!这篇文章也是年前的最后一篇,希望能带给大家些许收获,不知不觉查找文档和参考实体书籍就写了这么多,自己 ...

  7. MYSQL系列-Mysql存储引擎选择

    MYSQL系列-Mysql存储引擎选择 //查看当前数据库支持的存储引擎 show engines \G; 创建表的时候可以通过engine=MyISAM指定存储引擎 MyISAM: .MYISAM不 ...

  8. Mysql存储引擎比较

    Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...

  9. MySQL存储引擎之Myisam和Innodb总结性梳理

    Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...

随机推荐

  1. BIOS中未启用虚拟化支持系列~~例如:因此无法安装Hyper-V

    异常处理汇总-服务器系列:http://www.cnblogs.com/dunitian/p/4522983.html 一般都是启动一下CUP虚拟化就可以了 比如华硕的:

  2. 07.LoT.UI 前后台通用框架分解系列之——强大的文本编辑器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  3. html5标签canvas函数drawImage使用方法

    html5中标签canvas,函数drawImage(): 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本.参数传递三种形式: drawImage(image,x,y):在 ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)

    系列目录 前言 听标题的名字似乎是一个非常牛X复杂的功能,但是实际上它确实是非常复杂的,我们本节将演示如何实现对数据,进行组合查询(数据筛选) 我们都知道Excel中是如何筛选数据的.就像下面一样 他 ...

  5. 学习笔记之MVC级联及Ajax操作

    由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...

  6. 初识JavaScript

    JavaScript ECMA-262: 变量,函数,对象,数据类型....唯独没有输入和输出. Javascript:包含 ECMA-262,核心 BOM 浏览器对象模型, DOM 文档对象模型 什 ...

  7. Android中的LinearLayout布局

    LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了,  线性布局是按照垂直方向(vertical)或水平方向 ...

  8. 真正的汉化-PowerDesigner 16.5 汉化

    一.背景 经常使用PowerDesigner,之前使用15版本,后来16出来后,就一直在使用16,不过一直是英文.一些同事对使用英文版总显示有些吃力. 遍寻百度.必应,都没有找到真正的针对版本16的汉 ...

  9. Mysql 忘记root密码处理办法

    一.更改my.cnf配置文件 1.用命令编辑/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf 2.在[mysqld]下添加skip-grant-t ...

  10. μCos-ii学习笔记1_概述

    一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...