首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 服务器>数据库应用>文章内容
关于MySQL数据库的存储引擎详细介绍
来源:赛迪网技术社区 作者:feimeng 发布时间:2007-05-22  
存储引擎是什么?

  MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

  例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。

  这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

  选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了。

  在这篇文章中,我们不准备集中讨论不同的存储引擎的技术方面的问题(尽管我们不可避免地要研究这些因素的某些方面),相反,我们将集中介绍这些不同的引擎分别最适应哪种需求和如何启用不同的存储引擎。为了实现这个目的,在介绍每一个存储引擎的具体情况之前,我们必须要了解一些基本的问题。

  如何确定有哪些存储引擎可用

  你可以在MySQL(假设是MySQL服务器4.1.2以上版本)中使用显示引擎的命令得到一个可用引擎的列表。

  mysql> show engines;

  +------------+---------+----------------------------------------------------+

  | Engine | Support | Comment |

  +------------+---------+-----------------------------------------------------+

  | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |

  | HEAP | YES | Alias for MEMORY |

  | MEMORY | YES | Hash based, stored in memory, useful for temporary tables |

  | MERGE | YES | Collection of identical MyISAM tables |

  | MRG_MYISAM | YES | Alias for MERGE |

  | ISAM | NO | Obsolete storage engine, now replaced by MyISAM |

  | MRG_ISAM | NO | Obsolete storage engine, now replaced by MERGE |

  | InnoDB | YES | Supports transactions, row-level locking, and foreign keys |

  | INNOBASE | YES | Alias for INNODB |

  | BDB | NO | Supports transactions and page-level locking |

  | BERKELEYDB | NO | Alias for BDB |

  | NDBCLUSTER | NO | Clustered, fault-tolerant, memory-based tables |

  | NDB | NO | Alias for NDBCLUSTER |

  | EXAMPLE | NO | Example storage engine |

  | ARCHIVE | NO | Archive storage engine |

  | CSV | NO | CSV storage engine |

  +------------+---------+-------------------------------------------------------+

  16 rows in set (0.01 sec)   这个表格显示了可用的数据库引擎的全部名单以及在当前的数据库服务器中是否支持这些引擎。

  对于MySQL 4.1.2以前版本,可以使用mysql> show variables like "have_%"(显示类似“have_%”的变量):

  mysql> show variables like "have_%";

  +------------------+----------+

  | Variable_name | Value |

  +------------------+----------+

  | have_bdb | YES |

  | have_crypt | YES |

  | have_innodb | DISABLED |

  | have_isam | YES |

  | have_raid | YES |

  | have_symlink | YES |

  | have_openssl | YES |

  | have_query_cache | YES |

  +------------------+----------+

  8 rows in set (0.01 sec)

  你可以通过修改设置脚本中的选项来设置在MySQL安装软件中可用的引擎。如果你在使用一个预先包装好的MySQL二进制发布版软件,那么,这个软件就包含了常用的引擎。然而,需要指出的是,如果你要使用某些不常用的引擎,特别是CSV、 RCHIVE(存档)和BLACKHOLE(黑洞)引擎,你就需要手工重新编译MySQL源码 。

  使用一个指定的存储引擎

  你可以使用很多方法指定一个要使用的存储引擎。最简单的方法是,如果你喜欢一种能满足你的大多数数据库需求的存储引擎,你可以在MySQL设置文件中设置一个默认的引擎类型(使用storage_engine 选项)或者在启动数据库服务器时在命令行后面加上--default-storage-engine或--default-table-type选项。

  更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎。最直接的方式是在创建表时指定存储引擎的类型,向下面这样:

  CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB

  你还可以改变现有的表使用的存储引擎,用以下语句:

  ALTER TABLE mytable ENGINE = MyISAM

  然而,你在以这种方式修改表格类型的时候需要非常仔细,因为对不支持同样的索引、字段类型或者表大小的一个类型进行修改可能使你丢失数据。如果你指定一个在你的当前的数据库中不存在的一个存储引擎,那么就会创建一个MyISAM(默认的)类型的表。

  各存储引擎之间的区别

  为了做出选择哪一个存储引擎的决定,我们首先需要考虑每一个存储引擎提供了哪些不同的核心功能。这种功能使我们能够把不同的存储引擎区别开来。我们一般把这些核心功能分为四类:支持的字段和数据类型、锁定类型、索引和处理。一些引擎具有能过促使你做出决定的独特的功能,我们一会儿再仔细研究这些具体问题。

共2页: 上一页 1 [2] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·在Linux x86上安装Oracle数据库1
·Linux系统下的Oracle数据库编程
·Linux下免费数据库PostgreSQL开
·如何在你的Linux机器上安装运行O
·Oracle开发应用
·PostgreSQL的热备和恢复
·Heartbeat_2.0.3配置MySQL5.0.18
·编制一个Mysql数据库自动备份脚
·mysql 优化参数(十项)详解设置
·MySQL数据库系统的常规管理介绍
·新手入门--全面介绍MySQL的基础
·让PHP网站运转如飞 MySQL 的优化
  相关文章
·如何在Oracle里用存储过程定期分
·如何在你的Linux机器上安装运行O
·ORACLE数据库的启动和关闭
·Oracle数据库的备份与恢复
·Oracle数据库的备份及恢复策略研
·MySQL数据库中mysqldump命令使用
·简介Mysql中的临时表使用方法
·MySQL和SQL Server,到底选择谁?
·Apache2+php4.3.6+MySQL4.0.20+S
·MySQL数据库引擎快速指导
·让PHP网站运转如飞 MySQL 的优化
·新手入门--全面介绍MySQL的基础

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!