mysql 存储引擎
这段时间在看《High Performance MySQL》,看到存储引擎这个地方感到很多细节比较陌生,所以总结小记一些
为了适应各种不同的运行环境,MYSQL提供了多种不同的存储引擎(Storage Engine
),在应用程序开发这个层面上,开发者可以根据不同的需求选择适合的Storage Engine
方案,更为灵活的是,你可以根据每张表将要存储数据的特点,选择不同的Storage
Engine,也就是说,在一个MYSQL数据库中,可以混合使用多种不同的Storage Engine
首先小瞥一下MySQL的体系结构,在最高抽象层度下,可以用Garlan & Shaw的分层结构体系来表示(左)
其中应用层为所有RDBMS用户提供用户接口,逻辑层包括了所有核心功能的实现,物理层则负责将数据存储在硬件设备上。
图中右侧更为具体的描述了逻辑层的组成,查询处理子系统、事务管理子系统、恢复管理子系统和存储管理子系统共同组成了MySQL的逻辑层。相信
Storage Engine的位置是在Storage Management处,既Storage Engine属于Storage
Management子系统的一部分
为了让思路更清晰一些,下面给出一幅比较全面的体系结构图(或更确切的说是流程图,只是忽略了反馈)
上面三幅图来自于一篇非官方(不保证百分百的正确)的MySQL体系结构的报告,与《High Performance
MySQL》一书中给出的MySQL大体结构(下图,基本对应于Logic Layer,从第一幅图右侧可以看出MySQL logic
layer同样遵从分层体系结构)还是比较吻合的。
连接上图中第二层和第三层之间的接口是并不针对任何存储引擎的单一API,.大概由20个基本的类似“启动事务,返回结果集”等函数组成。存储引擎并不处理SQL,相互之间也不通信,它们的任务只是简单的响应高层传来的请求。
存储引擎各自的一些特点
上面提到的四种存储引擎都有各自适用的环境,这取决于它们独有的一些特征。主要体现在性能、事务、并发控制、参照完整性、缓存、 故障恢复,备份及回存等几个方面
目前比较普及的存储引擎是MyISAM和InnoDB.而MyISAM又是绝大部分Web应用的首选。MyISAM与InnoDB的主要的不同点在于性能和事务控制上。
MyISAM是早期ISAM(Indexed Sequential Access
Method,我现在用的MySQL5.0已经不支持ISAM了)的扩展实现,ISAM被设计为适合处理读频率远大于写频率这样一种情况,因此ISAM以
及后来的MyISAM都没有考虑对事物的支持,排除了TPM,不需要事务记录,ISAM的查询效率相当可观,而且内存占用很少。MyISAM在继承了这类
优点的同时,与时俱
相关文档:
一、数字类型
所谓的“数字类”,就是指 DECIMAL 和
NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失 ......
在网上找了很久,文章都是你抄、我抄你。看来看去都一样的,google往后翻N页 进去一看都是一样的。郁闷至极。 于上是CSDN论坛求助,还是java\web坛子里的朋友热情些,终于算是搞好了,自己再试了下,把心得发出来大家指点指点。 1、mysql-connector-java-5.0.8-bin.jar文件,也就是mysql驱动包。注意:要放到tomcat ......
准备:下载Mysql5.1<mysql-essential-5.1.41-win32.msi>
安装:step by step
测试:1.MySQL测试
点开MySQL Command Line Client, 输入安装时建立的密码。
mysql>show databases;
mysql>use <<database name>>;
mysql>show tables;
mysql>select * from <<table name>>;
......
在命令行上使用选项
在命令行中指定的程序选项遵从下述规则:
· 在命令名后面紧跟选项。
· 选项参量以一个和两个破折号开始,取决于它具有短名还是长名。许多选项有两种形式。例如,-?和--help是 ......
今天调程序从数据库里取数据,一直去不出来,把日志里打出来的sql放到数据库里去执行,却又能
取出数据来,很是郁闷。
数据库是mysql的,一共128个库,通过某个字段分库。
后来发现要查的这条数据的分库字段被改过,按照程序里执行的去查,他就去了另外一个库 ......