一、目录结构
/var/lib/mysql/
:MySQL数据库文件的存放路径;/usr/share/mysql
:配置文件目录;/usr/bin
:MySQL命令的存放目录;/etc/init.d/mysql
:启停相关脚本
二、分层结构
MySQL分为四层,从上到下依次为:
- 连接层:为应用程序提供连接服务的,比如JDBC;
- 服务层:这一层名堂很多,首先是有连接池,然后有sql接口,解析器,优化器等东西;
- 引擎层:真正负责mysql数据的存储和读取的部分,提供了很多可拔插式的存储引擎,常用的有MyIsam和InnoDB;
- 存储层:MySQL中存储的数据最终都要存在硬盘上,文件存储层就是将数据存储到文件系统,并完成与存储引擎的交互。
上面提到了可拔插式,意思就是,你要给手机充电,你可以放在无线充上,也可以用充电头充,也可以用充电宝充。实现相同的功能,你可以选择不同的实现方式,并且这些实现方式之间互不关联互不影响。
三、innoDB和MyIsam对比
对比项 | MyIsam | innoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,操作一条记录也会锁住整张表,不适合高并发 | 行锁,只锁住操作的那一行,适合高并发 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引,也缓存真实数据,对内存要求较高,内存大小对性能有决定性影响 |
表空间占用 | 小 | 大 |
关注点 | 性能 | 事务 |
是否默认安装 | 是 | 是 |