多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
![Image](https://box.kancloud.cn/251abe61f9562e95c8f64c31c2fbe4a4_333x279.png) 查看mysql中支持的全部存储引擎:show engines #### innodb 数据库每个数据表的数据设计三方面信息:表结构、数据、索引 ![Image](https://box.kancloud.cn/f25ae2eddf88a2739e997feb66054ebe_550x64.png) 技术特点:支持事务、行级锁定、外键 ##### 表结构,数据,索引的物理储存 表结构文件 ![Image](https://box.kancloud.cn/53f61270b791353ceaa5a382b6550787_378x124.png)储存位置,在mysql文件下面找 所有innodb表的数据和索引信息都存储在以下ibdata1文件中 ![Image](https://box.kancloud.cn/8944bf40825ba61e3993f4d95e3b2239_380x235.png) 给innodb类型表 的数据和索引创建自己对应的存储空间: 默认情况下每个innodb表的 数据和索引 不会创建单独的文件存储 ![Image](https://box.kancloud.cn/d716a7e8895da6770d598de44b0a5975_415x96.png) 设置变量,使得每个innodb表有独特的数据和索引 存储文件: ![Image](https://box.kancloud.cn/6f2207482c405c00c2d0ea862be3c1ee_351x38.png) ![Image](https://box.kancloud.cn/1a277175bba80de47936850134335b86_421x102.png) 重新创建一个表 (后期无论innodb\_file\_per\_table的设置状态如何变化,order2的数据和索引都有独立的存储位置) ![Image](https://box.kancloud.cn/962e40b4442e1c33c98fcf81d649dfff_425x175.png) Mysql5.6版本有支持全文索引 ##### 数据存储顺序 innodb表数据的存储是按照主键的顺序排列每个写入的数据。 ![Image](https://box.kancloud.cn/d64375534d2091e1391d86c142252692_426x300.png) 该特点决定了该类型表的写入操作较慢。 ##### 事物,外键 该类型数据表支持事务、外键 事务:把许多写入(增、改、删)的sql语句捆绑在一起,要么执行、要么不执行 事务经常用于与“钱”有关的方面。 四个特性:原子、一致、持久、隔离 具体操作: start transaction; 许多写入sql语句 sql语句有问题 rollback;回滚 commit;提交 rollback和commit只能执行一个 外键:两个数据表A和B,B表的主键是A表的普通字段,在A表看这个普通的字段就是该表的“外键”,外键的使用有”约束”。 约束:以上两个表,必须先写B表的数据,再写A表的数据 并且 A表的外键取值必须来之B表的主键id值,不能超过其范围。 真实项目里边很少使用“外键”,因为有约束。 ##### 并发性 该类型表的并发性非常高 多人同时操作该数据表 为了操作数据表的时候,数据内容不会随便发生变化,要对信息进行“锁定” 该类型锁定级别为:行锁。只锁定被操作的当前记录。 #### Myisam ##### 结构,数据,索引独立存储 \*.frm:表结构文件 \*.MYD:表数据文件 \*.MYI:表索引文件 该类型的数据表 表结构、数据、索引 都有独立的存储文件: ![Image](https://box.kancloud.cn/2ec35147188802a1ce34d9c9de00e774_286x71.png) 每个myisam数据表的 结构、数据、索引 都有独立的存储文件 特点:独立的存储文件可以单独备份、还原。 数据稳定后可以压缩数据信息 支持全文索引 ##### 数据存储顺序 myisam表数据的存储是按照自然顺序排列每个写入的数据。 ![Image](https://box.kancloud.cn/6a2feb988e3d70bc8390e831dd809dda_574x109.png) 该特点决定了该类型表的写入操作较快。 ##### 并发性 该类型并发性较低 该类型的锁定级别为:表锁 ##### 压缩机制 如果一个数据表的数据非常多,为了节省存储空间,需要对该表进行压缩处理。 复制当前数据表的数据: 开始压缩数据表的数据 //这里表名要带路径的F:\\phpstudy\\MySQL\\data\\php2\\order3 表名order3前面带路径 压缩工具:myisampack.exe 表名 重建索引:myisamchk.exe -rq 表名 解压缩工具:myisamchk.exe --unpack 表名 ![Image](https://box.kancloud.cn/63934ae64a2cfae13fec7afa16ddc80a_528x149.png) order3数据表有压缩,但是索引没有了:要重建索引 ![Image](https://box.kancloud.cn/9e2b1aa6536eddf3d86cb803b485fa8d_531x88.png)索引重建完毕 出现情况: 压缩的数据表是只读表,不能写信息: 压缩的数据表有特点:不能频繁的写入操作,只是内容固定的数据表可以做压缩处理 存储全国地区信息的数据表 收货地址信息数据表 如果必须要写数据:就解压该数据表,写入数据,再压缩 解压order3数据表,使得其可以写入数据: (解压同时索引自动重建) ![Image](https://box.kancloud.cn/2f91f3959bc91e9a94c06828db1b6b7b_537x78.png) 执行flush操作,更新解压后的数据:flush table 表名; //这边直接写表名就可以不带路径 该操作同时会删除order3.MYD.00996D46.deleted的压缩备份文件 innodb存储引擎:适合做修改、删除 Myisam存储引擎:适合做查询、写入 #### Archive 归档型存储引擎,该引擎只有写入、查询操作,没有修改、删除操作 比较适合存储“日志”性质的信息。 #### memory 内存型存储引擎,操作速度非常快速,比较适合存储临时信息, 服务器断电,给存储引擎的数据立即丢失。 #### 选择引擎 Myisam和innodb 网站大多数情况下“读和写”操作非常多,适合选择Myisam类型 例如 dedecms、phpcms内容管理系统(新闻网站)、discuz论坛 网站对业务逻辑有一定要求(办公网站、商城)适合选择innodb Mysql5.5默认存储引擎都是innodb的 Myisam和Innodb存储引擎特点 Myisam 表结构、数据、索引 分别有对应的存储文件 写入数据非常快,安装自然顺序写入数据 数据稳定后可以压缩数据信息 支持全文索引 并发性:少低,锁表操作 Innodb 表结构有单独存储文件,数据和索引共享同一个存储文件(ibdata1、\*.ibd) ibdata1 是全部innodb表的数据和索引的存储文件 \*.ibd 是每个innodb表的数据和索引的存储文件 支持事务和外键的 并发性:好,操作数据表时锁定记录(行) Mysql5.6版本有支持全文索引