标签:
以前一直玩Oracle数据库,整天围着业务需求和执行计划转,刚刚接触Mysql看到存储引擎不慎理解,相应会有与我相同人群存在,所以写文以记之。
首先简单从字面理解,想当是与磁盘打交道的,实际情况也是如此。一个数据库系统可以随意切换不同的存储引擎,也就是说随意选择写磁盘或操作磁盘的方式,觉得还是很牛掰的,所以这里看下Mysql的体系结构。
MySQL服务器采用了多层设计和独立模块,插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中,图中的Pluggable Storage Engines部分。采用MySQL服务器体系结构,由于在存储级别上(也就是Pluggable Storage Engines)提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。存储引擎就司职与文件系统打交道了。
到这里对与存储引擎的定位以及功能应该是基本了解的,接下来的疑问就是,有没有必要。很有必要的,因为一下罗列的内容是存储引擎处理的事情:
以上要求会在不同的需求中予以体现,通过单独一个系统实现是不可能的,以上特点有些本身就是相互矛盾的,鱼和熊掌的问题。对以上内容做些选择,形成的存储引擎就是一个插件引擎了,某些特定的需求可以使用。如下图,部分现有的存储引擎以及基本特点:
至此,应该对存储引擎有一个直观的印象了。对了,还有一点需要格外注意的: Mysql中不同的表可以指定不同的存储引擎,也就是说一套Mysql服务器可以同时使用N种不同的存储引擎,甚至自己写一个。
标签:
原文地址:http://www.cnblogs.com/wildfox/p/5815414.html