mysql在创建表的时候定义表的性质(也叫表的类型),共有三种:静态表,动态表,压缩表。默认是静态表,如果存在varchar、blob、text字段,表类型就是动态了。
1.静态表:
字段有固定长度,例如:char(20)。如果使用gbk字符集存储中文username,将占用40byte,如果username的实际内容没有达到 40byte,将会填充空格,以达到40byte。速度很快,因为mysql知道username总是从第41个字节开始,容易缓存,出现问题后也容易恢 复(mysql知道记录的确切位置),需要更多的硬盘空间(如果有三个上面的字段,一条记录就会占120字节,即使实际只用了其中一部分)
2.动态表:
字段不定长(变长),这种表格式比较节省空间,但是复杂度更高,每条记录都有一个header,作用就是表明该记录有多长,所有的字符串列都是动态的(除非 小于4个字节,这种情况下,节省的空间可以忽略不计,增加的复杂度会反而会导致性能丢失),通常占用比静态表少的多地空间,但是必须经常维护(避免碎 片),例如:更新了用户名somebody为somebodyt,t不能立刻就出现在y的后面,因为空间被其他记录占用,对于出现碎片的列,每个新连接会 损失6个字节。而且出现问题后不容易重建(前面我说的静态表正好相反),如果碎片严重,有可能出现库爆炸(^_^).
不包括连接的动态记录的空间消耗可以用下面的公式计算:
3+(列数+7)/8+(字符列数)+数字列的打包尺寸+字符串长度+(空列的数量+7)/8
每条记录的header可以表明那个字符串列是空的,那个数字列包含0(非空),在那种情况下不向磁盘存储,非空字符串包含一个长度字节加上字符串内容。
压缩表:
只读,使用很少的空间,用myisampack工具创建,表要少得多,每条记录分开压缩,所以不能同时访问,可以压缩静态表和动态表。
创建方法:myisampack [options] filename
你大体上可以看出来,具体的计算空间不容易,只要根据不同的表特点选择数据库就可以了。
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处 理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已 经外部键等高级数据库功能。
MyIASM是IASM表的新版本,有如下扩展:
二进制层次的可移植性。
NULL列索引。
对变长行比ISAM表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的auto_increment处理。
MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速操作。
MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。
以下是一些细节和具体实现的差别:
1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
分享到:
相关推荐
Maria是对MyISAM的升级版,Falcon是MySQL公司正在研发的事务性存储引擎,Memory引擎用于存储在内存中的临时表,Archive用于压缩存储日志,Merge用于合并多个表,Federated则用于远程访问其他MySQL服务器的数据。...
`mysql devel` 是 MySQL 开发库,包含了头文件和静态/动态库,供开发人员在应用程序中链接到 MySQL 数据库。这些头文件提供了 API 接口,使得开发者能够创建连接 MySQL 的程序,执行 SQL 查询,处理结果等。`mysql ...
文档中的这部分内容由于扫描识别错误不完整,但一般讨论MyISAM表可以是静态表(固定宽度字段)或动态表(字段长度可变),不同类型对性能和存储管理有不同的影响。 以上内容覆盖了MySQL相关的广泛知识点,包括存储...
6.8.1使用MySQL构建一个队列表251 6.8.2计算两点之间的距离254 6.8.3使用用户自定义函数257 6.9总结258 第7章MySQL高级特性259 7.1分区表259 7.1.1分区表的原理260 7.1.2分区表的类型261 7.1.3如何使用分区...
1. **isamchk 和 myisamchk**:这两个实用程序用于检查和修复表,并执行键分布分析以及释放和重新激活索引。这对于确保表结构的完整性非常重要。 2. **myisampack 和 pack_isam**:用于创建压缩的只读表。这在存储...
源码分为数据库和应用代码两个主要部分,数据库部分包含了论坛所需的表结构和数据,如用户信息、帖子、回帖等;应用代码则实现了用户交互、数据存取等功能。随附的说明和使用方法将指导用户如何部署和运行这个项目,...
MySQL是一款广泛使用的开源关系型数据库管理系统,其lib文件夹包含了MySQL服务器运行所需的动态链接库(Dynamic Link Libraries,DLLs)和静态库文件。这些库文件是MySQL系统的核心组成部分,为MySQL的各种功能提供...
数据库优化 177 8.1 索引的使用 178 8.1.1索引对单个表查询的影响 ...MySQL怎样优化LIMIT 190 8.3.4 记录转载和修改的速度 191 8.3.4.1 INSERT查询的速度 191 8.3.4.2 UPDATE查询的速度 193 8.3.4.3 ...
【描述】描述中的"FLASH+JSP+MYSQL极酷留言本+JSP+MYSQL极酷留言本"可能意味着该压缩包包含了两个相同名称的项目,或者是一个项目的重复提及,以强调其主要技术和功能。这通常是一个开发或演示用的项目,可能包括源...
在Web开发领域,PHP和MySQL是两个非常重要的组件,PHP是一种广泛使用的服务器端脚本语言,而MySQL则是一款功能强大的关系型数据库管理系统。将这些资源进行压缩,可以方便传输和存储,特别是对于大文件或多个文件的...
【数据同步】是Navicat的一大亮点,它能分析两个数据库之间的差异,并生成同步脚本,帮助用户保持数据库的一致性。这对于多环境部署和团队协作尤其有用。 【报表创建】功能允许用户设计复杂的报表,展示数据库中的...
【标题】"基于JSP+MySQL的购物网站"是一个典型的Web开发项目,它结合了Java Server Pages(JSP)技术和MySQL数据库,用于构建一个功能完善的在线购物平台。JSP是Java的一种动态网页技术,用于创建交互式的Web应用...
这两个命令分别用于编译 MySQL 源码以及安装编译好的二进制文件。 #### 初始化 MySQL 数据库 初始化 MySQL 数据库是一个关键步骤,这将创建数据库所需的文件结构。 ```bash shell> cp support-files/my-medium....
【压缩包子文件的文件名称列表】: "myWeb" 这个文件名可能是整个BBS系统的根目录,里面可能包含了一系列的JSP文件(如index.jsp、login.jsp等)、配置文件(如web.xml)、类文件(编译后的Java代码)、数据库连接...
2. 好友关系表:记录用户之间的朋友关系,通常包括两个用户ID和关系状态。 3. 消息表:存储用户间的私信,包括发送者、接收者、消息内容和时间戳。 4. 兴趣爱好表:记录用户的兴趣爱好,便于匹配和搜索。 在实现...
4. **mysql-1.6.0.zip** 和 **mysql-master.zip**:这两个文件看起来是不同版本的MySQL数据库的源代码或二进制文件。它们可能是为了测试或演示MySQL Markdown工具而提供的,让用户可以在本地环境中运行MySQL服务器,...
【标题】"jsp+mysql设计的科比主题网站"是一个基于JavaServer Pages(JSP)技术和MySQL数据库构建的网站项目,其主要目标是展示科比·布莱恩特的相关信息,并提供用户交互功能,如注册、登录以及购物车服务。这个...
标题中的“apache mysql php discuz WordPress”揭示了四个关键的IT技术领域,它们分别是Apache服务器、MySQL数据库、PHP编程语言以及Discuz和WordPress这两个流行的Web应用程序。这些元素都是构建高效、动态网站和...