MySql数据库

储存引擎: MyISAM Mysql 的默认数据库,最为常用。拥有较高的插入,查询速 度,但不支持事务 InnoDB 事务型数据库的首选引擎,支持 ACID 事务,支持行级锁定 BDB 源自 Berkeley DB,事务型数据库的另一种选择,支持 COMMIT 和 ROLLBACK 等其他事务特性 Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。 但是会占用和数据量成正比的内存空间。并且其内容会在 Mysql 重新启动时丢失 Merge 将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很 有用 Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被 读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差 Federated 将不同的 Mysql 服务器联合起来,逻辑上组成一个完整的数据库。 非常适合分布式应用 4 Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性 能和安全性。适合数据量大,安全和性能要求高的应用 CSV 逻辑上由逗号分割数据的存储引擎 BlackHole 黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制 的中继 另外,Mysql 的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己 的存储引擎。 应用架构:单点(Single),适合小规模应用 复制(Replication),适合中小规模应用 集群(Cluster),适合大规模应用 Mysql 架构及应用(3 张) MySQL4.1 版本中增加了不少新的性能,包括对主键的更高速度的缓存,对子查 询的更好的支持,以及应网络约会网站所要求的,基于地理信息的查询。 其同步开发的 5.0 版本则把目标对准了企业用户,对于 4.1 版本中的所有新特 性,5.0 版本悉数收入囊中,并且独具以下特点:对外键的良好支持;系统自动报错机制 以及对存储过程的充分支持。 索引文件 编辑 5 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分), 它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操 作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序 上弥补这一缺陷,许多 SQL 命令都有一个 DELAY_KEY_WRITE 项。这个选项的作用是暂 时制止 MySQL 在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新, 对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数 据表的场合,DELAY_KEY_WRITE 选项的作用将非常明显。另外,索引还会在硬盘上占用 相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某 个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。 从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但 MySQL 把同 一个数据表里的索引总数限制为 16 个。 1、InnoDB 数据表的索引 与 InnoDB 数据表相比,在 InnoDB 数据表上,索引对 InnoDB 数据表的重要性 要大得多。在 InnoDB 数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级 锁定机制的苊、基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被 处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、 LOCK IN SHARE MODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。出于效率方面的考虑,InnoDB 数据表的数据行级锁定实际发生在它们的索 引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的 索引可供锁定的时候才能发挥效力。 2、限制 6 如果 WHERE 子句的查询条件里有不等号(WHERE coloum!=),MySQL 将无 法使用索引。类似地,如果 WHERE 子句的查询条件里使用了函数(WHEREDAY (column)=),MySQL 也将无法使用索引。在 JOIN 操作中(需要从多个数据表提取 数据时),MySQL 只有在主键和外键的数据类型相同时才能使用索引。 如果 WHERE 子句的查询条件里使用比较操作符 LIKE 和 REGEXP,MySQL 只有 在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是 LIKE’abc%‘,MySQL 将使用索引;如果查询条件是 LIKE’%abc’,MySQL 将不使用索 引。 在 ORDERBY 操作中,MySQL 只有在排序条件不是一个查询条件表达式的情况 下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加 快 ORDERBY 方面也没什么作用)。如果某个数据列里包含许多重复的值,就算为它建立 了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或 “Y/N”等值,就没有必要为它创建一个索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值