`
jiangxiabeijing
  • 浏览: 27057 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL数 据库引擎

阅读更多

MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAMMYISAMHEAP。另外两种类型INNODBBERKLEYBDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:

ISAMISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。

MyISAMMyISAMMySQLISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据

HEAPHEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAMMYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格

InnoDBInnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MYSQL++ API在使用MYSQL的时候,你所面对的每一个挑战几乎都源于ISAMMyISAM数据库引擎不支持事务处理(transaction process)也不支持外来键。尽管要比ISAM MyISAM引擎慢很多,但是InnoDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者 或者两者,那你就要被迫使用后两个引擎中的一个了。 

MySQL 官方对InnoDB是这样解释的InnoDBMySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎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成为WindowsMySQL的默认表。

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)看你的MySQL当前默认的存储引擎: mysql> show variables like '%storage_engine%';

   3)你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名;

 

所有的性能测试在:Micrisoft window xp sp2 Intel(R) Pentinum(R) M processor 1.6oGHz 1G 内存的电脑上测试。

测试方法:连续提交10query, 表记录总数:38万 , 时间单位 s

       引擎类型       MyISAM      InnoDB      性能相差

       count        0.0008357     3.0163        3609

       查询主键     0.005708      0.1574        27.57

       查询非主键   24.01         80.37         3.348

       更新主键     0.008124      0.8183        100.7

       更新非主键   0.004141      0.02625       6.338

       插入         0.004188      0.3694        88.21

 

   1)加了索引以后,对于MyISAM查询可以加快:4 206.09733倍,对InnoDB查询加快510.72921倍,同时对MyISAM更新速度减慢为原来的1/2InnoDB的更新速度减慢为原来的1/30要看情况决定是否要加索引,比如不查询的log表,不要做任何的索引

   2)如果你的数据量是百万级别的,并且没有任何的事务处理,那么用MyISAM是性能最好的选择。

   3InnoDB表的大小更加的大,用MyISAM可省很多的硬盘空间。

       在我们测试的这个38w的表中,表占用空间的情况如下:
         引擎类型         MyISAM       InnoDB

       数据           53,924 KB    58,976 KB

       索引           13,640 KB    21,072 KB

       占用总空间     67,564 KB    80,048 KB

 

     另外一个176W万记录的表, 表占用空间的情况如下:

       引擎类型        MyIsam         InnorDB

       数据            56,166 KB      90,736 KB

       索引            67,103 KB      88,848 KB

       占用总空间      123,269 KB     179,584 KB

 

分享到:
评论

相关推荐

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战班 第06天 │ 1_课堂作业讲解.mp4 │ 2_InnoDB内核之事务和多版本控制.mp4 │ 3_InnoDB底层...

    java 流程控制 工作流引擎,mysql数据库

    数据库是MYSQL的,请把DATA下面的workflow库文件之间拷贝在MYSQL的数据DATA目录下面 代码包是FOR ECLIPSE的,请把代码包直接解压缩到任意目录下,如果出现LIB库文件错误,请修改代码包的资源文件和地址配置文件

    MySQL修改默认存储引擎的实现方法

    mysql存储引擎: MySQL服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上。存储引擎负责管理数据存储,以及MySQL的索引管理。通过定义的API,MySQL服务器能够与存储引擎进行通信。目前使用最多...

    一个MySQL存储引擎插件 它能够在 cantian 存储引擎的帮助下将MySQL 实例形成一个多读多写的透明集群

    这将使MySQL单机的应用无需进行(分库分表等)改造就可以获得集群架构的灵活并发、高性能处理与故障快速恢复能力。Cantian connector通过插件加载方式集成到MySQL中运行,替代InnoDB作为默认的数据存储引擎执行表的...

    MySQL中文手册MySQL中文手册

    25. API和库 26. 连接器 27. 扩展MySQL A. 问题和常见错误 B. 错误代码和消息 C. 感谢 D. MySQL变更史 E. 移植到其他系统 F. 环境变量 G. 正则表达式 H. Limits in MySQL I. 特性限制 J. GNU通用公共...

    校园招聘计算机岗位MySQL面试题

    答:MySQL的存储引擎是底层管理MySQL表的程序库,它决定了如何存储、检索和更新表中的数据。MyISAM和InnoDB是两种MySQL的常见存储引擎。两个引擎的主要区别如下: MyISAM:不支持事务和行级锁定,支持全文索引和...

    MySQL 5.1中文手冊

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

    MySQL 5.1参考手册

    MySQL 5.1参考手册.chm 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL...

    MySQL 5.1官方简体中文参考手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    02-DBA参与项目数据库设计及培训开发人员高效设计MYSQL库语句.avi 03-老男孩核心思想-项目周期的制定思想.avi 04-linux进程占用cpu高的解决方案案例.avi 05-数据库账户权限控制多种思路及技巧.avi 06-数据库客户端...

    mysql-5.7.9.tar.gz

    更好的InnoDB存储引擎:内容太多,就等Inside君的《MySQL技术内幕:InnoDB存储引擎》第3版吧; 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。此外,GTID在线平滑...

    MySQL 5.1参考手册中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MySQL 5.1参考手册 (中文版)

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

    mysql5.1中文手册

    使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串...

    MySQL安装教程windows64位

     列:这个是因为缺少微软的一些运行所需的库。这个百度一下都可以找到下载源安装一下(可能需要重启 )     安装MySQL服务 + 启动MySQL 服务  安装mysql服务 执行下面的命令: mysqld --install [服务名] ...

    高可用MySQL(第2版)英文原版 MySQL High Availability, 2nd Edition

    第 2章 MySQLReplicant库 8 第 3章 MySQL复制原理 18 第 4章 二进制日志 45 第 5章 面向高可用性的复制 112 第 6章 面向横向扩展的 MySQL复制 138 第 7章 数据分片 171 第 8章 深入复制 204 第 9章 MySQL...

    MySQL中进行跨库查询的方法示例

    前言 在MySQL中跨库查询主要分为两种情况...不同服务的跨库查询,直接通过数据名加表明是无法进行关联的,这里需要用到MySQL数据库中的federated引擎。具体过程如下: 需求:服务A上的数据库X的表A需要关联服务B上的数

    基于flask与MySQL完成的音乐库管理系统.zip

    MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY等,每种引擎都有特定的优势和适用场景。例如,InnoDB提供事务安全、行级锁定和外键约束,适合处理高并发事务性的应用;MyISAM则更侧重于读取密集型操作,提供全文...

    Mysql8.0 数据库恢复工具

    文件级别数据库恢复工具软件,本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表...

    MySQL训练营视频.zip

    │ day1-不同存储引擎建表语句.sql │ day1_MySQL架构与SQL执行流程-笔记.pdf │ day1_MySQL架构与SQL执行流程-课件.pdf │ day1_MySQL架构与SQL执行流程.mp4 │ day2-相关SQL.sql │ day2_MySQL索引深入剖析-笔记....

Global site tag (gtag.js) - Google Analytics