MySQL 选择合适的存储引擎_Mysql

来源:脚本之家  责任编辑:小易  

MyISAM、2113InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。MySQL支持数5261个存储引4102擎作为对不同表的类型的处1653理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:· MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。· MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。· InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。· EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。· NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。· ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。· CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。· BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。· FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。比较常用的是MyISAM和InnoBDwww.zgxue.com防采集请勿采集本网。

对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有很多种,那么 MySQL 中分别又有那些,怎么优雅的使用呢?

1. innodb 2. 自增id+唯一索引. 3. 为什么用md5.什么应用? 如果可以用整型会更好.

划分引擎原因

关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不

在文件系统中,MySQL 将每个数据库(也可以称之为 schema )保存为数据目录下的一个子目录。创建表时,MySQL 会在数据库子目录下创建一个和表同名的 .frm 文件保存表的定义。例如创建一个名为 DebugTable 的表,MySQL 会在 DebugTable.frm 文件中保存该表的定义。

MyISAM、InnoDB、Heap(Memory)、NDB 貌似一般都是使用 InnoDB的, mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、

因为 MySQL 使用文件系统的目录和文件来保存数据库和表的定义,大小写敏感性和具体的平台密切相关。在 Windows 系统中,大小写是不敏感的;而在类 Unix 系统中则是敏感的。不同的存储引擎保存数据和索引的方式是不同的,但表的定义则是在 MySQL 服务层wk统一处理的。

web服务这样的在线系统,还是推荐使用innodb引擎,也就是官方推荐的默认引擎

查看支持引擎

MyISAM、InnoDB、Heap(Memory)、NDB 貌似一般都是使用 InnoDB的,mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、

想了解 MySQL 中支持的引擎的情况,可以使用如下命令查看:

show engines;

结果如下(MySQL版本:Ver 8.0.19):

mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL || MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO || InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES || PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO || MyISAM | YES | MyISAM storage engine | NO | NO | NO || MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO || BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO || CSV | YES | CSV storage engine | NO | NO | NO || ARCHIVE | YES | Archive storage engine | NO | NO | NO |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+9 rows in set (0.00 sec)

存储引擎分类

MySQL 存储引擎分类有 MyISAM、InnoDB、Memory、Merge等,可以看上面表中列出的支持引擎,但是其中最为常用的就是 MyISAM 和 InnoDB 两个引擎,其中针对于以上讲到的存储引擎,如下表进行对比:

MyISAM 与 InnoDB 区别

两种类型最主要的差别是InnoDB支持事务处理与外键和行级锁。

    InnoDB 可借由事务日志( Transaction Log )来恢复程序崩溃( crash ),或非预期结束所造成的数据错误;而 MyISAM 遇到错误,必须完整扫描后才能重建索引,或修正未写入硬盘的错误。 InnoDB 的修复时间,一般都是固定的,但 MyISAM 的修复时间,则与数据量的多寡成正比。 相对而言,随着数据量的增加,InnoDB 会有较佳的稳定性。 MyISAM 必须依靠操作系统来管理读取与写入的缓存,而 InnoDB 则是有自己的读写缓存管理机制。( InnoDB 不会将被修改的數據頁立即交给操作系统)因此在某些情况下,InnoDB 的数据访问会比 MyISAM 更有效率。 InnoDB 目前并不支持 MyISAM 所提供的压缩与 terse row formats(简洁的行格式) ,所以对硬盘与高速缓存的使用量较大。 当操作完全兼容 ACID(事务)时,虽然 InnoDB 会自动合并数笔连接,但每次有事务产生时,仍至少须写入硬盘一次,因此对于某些硬盘或磁盘阵列,会造成每秒 200 次的事务处理上限。若希望达到更高的性能且保持事务的完整性,就必使用磁盘缓存与电池备援。当然 InnoDB 也提供数种对性能冲击较低的模式,但相对的也会降低事务的完整性。而MyISAM则无此问题,但这并非因为它比较先进,这只是因为它不支持事务。

应用场景 MyISAM 管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的 SELECT 查询,那么 MyISAM 是更好的选择。 InnoDB 用于事务处理应用程序,具有众多特性,包括 ACID 事务支持。如果应用中需要执行大量的 INSERT 或 UPDATE 操作,则应该使用 InnoDB,这样可以提高多用户并发操作的性能。

以上就是MySQL 存储引擎的选择的详细内容,更多关于MySQL 存储引擎的资料请关注真格学网其它相关文章! 您可能感兴趣的文章:聊聊MySQL中的存储引擎简述MySQL InnoDB存储引擎简单了解MySQL存储引擎MySql 存储引擎和索引相关知识总结MySQL MyISAM默认存储引擎实现原理MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计浅谈MySQL中四种常用存储引擎MySQL学习(七):Innodb存储引擎索引的实现原理详解MySQL存储引擎InnoDB的配置与使用的讲解MySQL存储引擎MyISAM与InnoDB区别总结整理MySQL常用存储引擎功能与用法详解MySQL修改默认存储引擎的实现方法

MyISAM:默认的MySQL 插件式存储引擎。如果应用是以读操作和插入操作为主,只有很少的更新和62616964757a686964616fe4b893e5b19e31333363353835删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常适合的。MyISAM 是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。. InnoDB:用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,那么InnoDB 存储引擎应该是比较合适的选择。InnoDB 存储引擎除了有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交(Commit)和回滚(Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB 都是合适的选择。MEMORY:将所有数据保存在RAM 中,在需要快速定位记录和其他类似数据的环境下,可提供极快的访问。MEMORY 的缺陷是对表的大小有限制,太大的表无法CACHE 在内存中,其次是要确保表的数据可以恢复,数据库异常终止后表中的数据是可以恢复的。MEMORY 表通常用于更新不太频繁的小表,用以快速得到访问结果。. MERGE:用于将一系列等同的MyISAM 表以逻辑方式组合在一起,并作为一个对象引用它们。MERGE 表的优点在于可以突破对单个MyISAM 表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效地改善MERGE 表的访问效率。这对于诸如数据仓储等VLDB环境十分适合内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mysql 表数据的导入导出操作示例
  • mysql 主键与索引的联系与区别分析
  • mysql启动的error 2003和1067错误问题解决方法
  • mysql用户密码中的特殊字符叹号(!)的妙用
  • mysql order by语法介绍
  • mysql数据库设置远程访问权限方法小结
  • mysql中使用udf自动同步memcached效率笔记
  • centos7下mysql 8.0.16 安装配置方法图文教程
  • mysql 常用命令用法总结脚本之家整理版
  • c#如何在海量数据下的高效读取写入mysql
  • 如何选择合适的MySQL存储引擎
  • 如何选择MySQL存储引擎
  • mysql到底用哪一款存储引擎
  • Mysql 应该选择什么引擎
  • 在使用MD5作为主键的情况下,mysql选择哪个存储引...
  • mysql5 从库 适合用什么存储引擎
  • mysql几种存储引擎介绍
  • WEB服务器,mysql的存储引擎选哪个合适
  • MYSQL的存储引擎一般只要哪些
  • MySQL存储引擎通常有哪3种?各自分别有什么特点
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页聊聊mysql中的存储引擎简述mysql innodb存储引擎简单了解mysql存储引擎mysql 存储引擎和索引相关知识总结mysql myisam默认存储引擎实现原理mysql 学习总结 之 初步了解 innodb 存储引擎的架构设计浅谈mysql中四种常用存储引擎mysql学习(七):innodb存储引擎索引的实现原理详解mysql存储引擎innodb的配置与使用的讲解mysql存储引擎myisam与innodb区别总结整理mysql常用存储引擎功能与用法详解mysql修改默认存储引擎的实现方法mysql 表数据的导入导出操作示例mysql 主键与索引的联系与区别分析mysql启动的error 2003和1067错误问题解决方法mysql用户密码中的特殊字符叹号(!)的妙用mysql order by语法介绍mysql数据库设置远程访问权限方法小结mysql中使用udf自动同步memcached效率笔记centos7下mysql 8.0.16 安装配置方法图文教程c#如何在海量数据下的高效读取写入mysqlmysql安装图解 mysql图文安装教程can""""t connect to mysql servwindows下mysql5.6版本安装及配置mysql字符串截取函数substring的mysql创建用户与授权方法mysql提示:the server quit withmysql日期数据类型、时间类型使用mysql——修改root密码的4种方法mysql update语句的用法详解mysql之timestamp(时间戳)用法mysql 8.0.16 winx64安装配置方法图文教程详解mysql中重命名procedure的一种方法mysql 5.7 学习心得之安全相关特性mysql-8.0.15-winx64 使用zip包进行安装及mysql数据备份之mysqldump的使用详解mysql中的count()与sum()区别详细介绍centos下rpm方式安装mysql5.6教程mysql查看、创建和删除索引的方法linux 之centos7搭建mysql5.7.29的详细过mysql 5.7及8.0版本数据库的root密码遗忘
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved