深入浅析mysql引擎
mysql引擎
mysql数据库引擎取决于mysql在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译mysql。在缺省情况下,mysql支持三个引擎:ISAM,MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。下面介绍几种数据库引擎:
ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个不足之处在于,它不支持事物处理,也不能够容错。如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。
MYISAM:MyISAM是 mysql的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM中没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。
HEAP: HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但它所管理的数据是不稳定的,而且在关机之前没有进行保存,那么所有数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。
InnoDB:InnoDB数据库引擎是造就Mysql灵活性的技术的直接产品,这项技术就是MYSQL++ API。在使用mysql的时候,你所面对的每一个挑战几乎都源于ISAM和MYISAM数据引擎不支持事物处理也不支持外来键。尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB包括了对事物处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者 或者两者,那你就要被迫使用后两个引擎中的一个了。
MySQL 官方对InnoDB是这样解释的:InnoDB给mysql提供的具有提交,回滚和崩溃恢复能力的事物安全存储引擎。InnoDB锁定在行级并且也在select语句提供一个Oracle风格一致的非锁定读,这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。
InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。
InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。
InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。
InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。 Mytrix, Inc.在InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的。
一般来说:
MYISAM 适合:(1)做很多count的计算;(2)插入不频繁,查询非常频繁;(3)没有事物。
InnoDB适合:(1)可靠性要求比较高,或者要求事物;(2)表的更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看:
(1)看你的mysql现在已提供什么存储引擎:mysql> show engines;
(2)查看你的msql当前默认的存储引擎:mysql> show variables like '%storage_engine%';
(3)你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):mysql>show create table 表名;
转载于:https://www.cnblogs.com/vanl/p/5473658.html
深入浅析mysql引擎相关推荐
- 浅析Mysql InnoDB存储引擎事务原理
浅析Mysql InnoDB存储引擎事务原理 大神:http://blog.csdn.net/tangkund3218/article/details/47904021
- MySQL · 引擎分析 · InnoDB行锁分析
前言 理解InnoDB行锁,分析一条SQL语句会加什么样的行锁,会锁住哪些数据范围对业务SQL设计和分析线上死锁问题都会有很大帮助.对于InnoDB的行锁,已经有多篇月报进行了介绍,这里笔者借鉴前面月 ...
- mysql 线程缓存_浅析MySQL内存的使用说明(全局缓存+线程缓存)
首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分): 复制代码 代码如下: per_thread_buffers=(read_buffer_s ...
- using b tree mysql_浅析MysQL B-Tree 索引
B-Tree 索引 不同的存储引擎也可能使用不同的存储结构,i如,NDB集群存储引擎内部实现使用了T-Tree结构存储这种索引,即使其名字是BTREE:InnoDB使用的是B+Tree. B-Tree ...
- 架构周报| 浅析MySQL JDBC连接配置上的两个误区
经典案例 \\ 浅析MySQL JDBC连接配置上的两个误区:相信使用MySQL的同学都配置过它的JDBC驱动,多数人会直接从哪里贴一段URL过来,然后稍作修改就上去了,对应的连接池配置也是一样的,很 ...
- MySQL引擎特性GIS-R-TREE
MySQL引擎特性GIS-R-TREE Geohash用于代表位置的经纬度编码成一个字符串,支持WGS 84 Coordinate System MySQL支持的空间数据类型包括GEOMETRY,PO ...
- 添加mysql引擎错误
在添加mysql引擎时,可能出现如下错误: Can't open shared library '/usr/local/mysql/lib/mysql/plugin/ha_innodb.so' (er ...
- MySQL · 引擎特性 · InnoDB 崩溃恢复过程
在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主要流程. 本文代码分析基于 MySQL 5.7.7-RC ...
- 15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系
20.MySQL引擎 20.1.MySQL引擎 20.2.MySQL和ClickHouse中数据类型的对应关系 20.3.示例 20.MySQL引擎 20.1.MySQL引擎 MySQL引擎可实现对M ...
最新文章
- QIIME 2教程. 20实用程序Utilities(2020.11)
- .net 考试系统人一多就断开了_2020年银行从业资格考试成绩查询入口已开放
- docker可视化管理界面_分析一款Docker容器可视化管理工具Porttainer
- D - Yet Another Problem On a Subsequence CodeForces - 1000D (DP,组合数学)
- WebStorm使用教程
- 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件
- MySQL空闲会话_使用Oracle PROFILE控制会话空闲时间
- php中动态变量数组,php – 将数组提取到动态变量中
- RFID技术为智能轮胎在未来车联网领域的应用奠定了基础
- 阿里云loT物联网学习
- Datawhale组队学习周报(第045周)
- 示例代码-协方差,黎曼协方差计算.
- 上海航芯|推出基于ACX200T的V2X解决方案
- 阿里大数据面试题集合:Hadoop+HBase+Spark+Zookeeper
- mysql .myd_关于mysql 删除数据后(.MYD,MYI)物理空间未释放
- 硕士论文重复率太高了怎么办
- MOSFET的SOA
- h5 div自动排列
- 线性代数(一)-行列式
- 使用 PhpStorm 来开发和 Debug Laravel Sail 项目