没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
26页
1、囊括了几乎所有和mysql面试相关的多个文档中的试题内容。 2、重新整理并去除了部分重复、错误、无关的试题。 3、结构清晰的目录,方便查阅及快速定位内容。 4、图文、表格方式呈现知识点,轻松阅读、比较记忆。 5、全文共26页,内容全面详细,知识点丰富。 6、本试题内容并非单纯的只为面试准备,其本质是mysql知识的集大成者。 7、无论是为面试亦或者是学习mysql的知识,本文档均能给你提供丰富的知识。 8、本文档提供了实际应用中常遇到的问题以及解析,让你知其然也知其所以然。 9、本文档绝对是你学习mysql的不二之选,全都是非常干非常硬的知识。
资源推荐
资源详情
资源评论
mysql 常用引擎
mysql 常用引擎包括:MYISAM、Innodb、Memory、MERGE
MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间
相对较小,对事务完整性没有要求,以 select、insert 为主的应用基本上可以使用这引擎
Innodb:行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持
外键约束,并发能力强,占用空间是 MYISAM 的 2.5 倍,处理效率相对会差一些
Memory:全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在
mysql 重启时会丢失,默认使用 HASH 索引,检索效率非常高,但不适用于精确查找,主要用
于
那些内容变化不频繁的代码表
MERGE:是一组 MYISAM 表的组合
MyISAM 和 InnorDB 区别说明
InnorDB
MYISAM
INNODB
事务支持
不支持
支持
数据行锁定
不支持
支持
数据表锁定
支持
支持
外键约束
不支持
支持
全文索引
支持
不支持
表空间的大小
较小
较大,约为 MAISAM 的两倍
事务支持
MyISAM:强调的是性能,每次查询具有原子性,其执行数度比 InnoDB 类型更快,但是不提
供事务支持。
InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚
(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID
compliant))型表。
锁
InnoDB 支持行级锁,而 MyISAM 支持表级锁,用户在操作 myisam 表时,select,
update,
delete,insert 语句都会给表自动加锁,如果加锁以后的表满足 insert 并发的情况下,可以在
表的尾部插入新的数据。
InnoDB 支持 MVCC, 而 MyISAM 不支持
外键
InnoDB 支持外键,而 MyISAM 不支持。
主键
MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。
InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个 6 字节的主键(用户不可
见),数据是主索引的一部分,附加索引保存的是主索引的值。
全文索引
InnoDB 不支持全文索引,而 MyISAM 支持。
可移植性、备份及恢复
MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复
时可单独针对某个表进行操作。
InnoDB:免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达
到几十 G 的时候就相对痛苦了。
存储结构
MyISAM:每个 MyISAM 在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩
展名指出文件类型。.frm 文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的
扩展名是.MYI (MYIndex)。
InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文
件),InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。
间隙锁
InnorDB 支持 MVCC,Multiversion Concurrency Control 间隙锁 。
MyISAM 不支持 MVCC。
MyISAM 引擎
MyIsam 存储引擎独立于操作系统,简单说就是可用在 windows 上使用,也可用将数据转移
到 Lunex 操作系统上。系统兼容性很好。这种存储引擎在建表的时候,它会创建 3 个文件。
分别是(.frm, .MYD, .MYI),简单说明一下:.frm 存储表的定义(也就是表结构啦),.MYD 就是
表里面的数据,.MYI 存储索引。这样的划分操作系统对大文件的操作是比较慢的,这样将表
分为三个文件,那么.MYD 这个文件单独来存放数据自然可以优化数据库的查询等操作。
特点:
1、不支持事务
2、不支持外键
3、查询速度很快。如果数据库 insert 和 update 的操作比较多的话采用表锁效率低(建议使用
innodb)。
4、对表进行加锁
支持 3 种不同的存储方式,分别是:静态表、动态表、压缩表。
静态表:静态表的字段都是非变长类型的。优点是非常迅速,容易缓存,出现故障容易恢复;
缺点是占用空间通常比动态表多(因为存储是会按照宽度定义补足空格)。
注意:在取数据时,会将数据后面的空格都去掉,如果数据后面本身有空格,那么也会被去
掉。
动态表:记录不是固定长度的,这样的优点时空间占用少;缺点:频繁的更新,删除表易造成
碎片,需要定期执行 OPTIMIZE TABLE 或者 myisamchk-r 命令来改善性能。
压缩表:因为每个记录都是单独压缩的,所以只有非常小的访问开支。
InnoDB 引擎
InnoDB 是一个事务型的存储引擎,有行级锁定和外键约束,提供了具有提交,回滚和崩溃恢复
的事务安全,但是对比 MyLSAM 引擎,写的效率会比差一些,并且会占用更多的磁盘空间以
保存数据和索引。
特点:
1. 更新多的表,适合处理多重并发的更新请求。
2. 支持事务。
3. 可以从灾难中恢复(通过 bin-log 日志等)。
4. 外键约束。只有他支持外键。
5. 支持自动增加列属性 auto_increment。
数据库三范式
第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。
第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属
性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键
的一部分)
第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间
有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B
->C, A -> C)
数据库的事务
什么是事务?: 多条 sql 语句,要么全部成功,要么全部失败。
事务的特性:
数据库事务特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性
(Durabiliy)。简称 ACID。
原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作
都成功,整个事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,
让数据库返回初始状态。
一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即数据不会
被破坏。如 A 转账 100 元给 B,不管操作是否成功,A 和 B 的账户总额是不变的。
隔离性:在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对彼
此产生干扰。
持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中。
并发事务带来哪些问题?
在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务
剩余25页未读,继续阅读
资源评论
孤蓬&听雨
- 粉丝: 7067
- 资源: 326
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功