备案网站分布地点,wordpress如何去掉amp:,网站备案 和 icp,北京营销策划有限公司一#xff1a;两种数据库引擎区别及如何选择#xff1f;
InnoDB和MyISAM的区别#xff1f;
1#xff1a;InnoDB支持事务#xff0c;而MyISAM不支持事务。这是MYSQL将默认引擎从MYISAM变为INNODB的重要原因之一。
2#xff1a;INNODB支持外键#xff0c;而MYISAM不支持…一两种数据库引擎区别及如何选择
InnoDB和MyISAM的区别
1InnoDB支持事务而MyISAM不支持事务。这是MYSQL将默认引擎从MYISAM变为INNODB的重要原因之一。
2INNODB支持外键而MYISAM不支持。对一个包含外键的INNODB表转为MYISAM会失败。
3INNODB是聚集索引MYISAM是非聚集索引。聚簇索引的文件放在主键索引的叶子节点上因此INNODB必须要有主键通过主键索引效率很高但是辅助索引需要两次查询然后在通过主键查询到数据因此主键不应该过大因为主键过大其他索引也会很大而MYISAM是非聚集索引数据文件是分离的索引保存的是数据文件的指针主键索引和辅助索引是独立的。
4INNODB不保存表的具体行数执行select*from table时会全表扫描。而MYISAM用一个变量保存整个表的行数执行上述语句时只需要读出该变量即可速度很快。
5INNODB最小的锁粒度时行锁MYISAM最小的是表锁一个更新语句会锁住整张表导致其他查询和更新都会被阻塞因此并发受限这也是替换的重要原因之一。
如何选择
1是否支持事务如果需要选择INNODB否则可以考虑MYISAM。
2如果表中绝大多数都是读查询可以考虑MYISAM如果读写很频繁使用INNODB。
3系统崩溃后MYISAM恢复起来更困难能否接受不能选择INNODB
4:MYSQL5.5版本以后INNODB已经成为MYSQL默认引擎说明优势还是有目共睹的不知如何选择就是用INNODB。
删除数据库需要注意什么
使用drop database命令需要非常谨慎。再执行改命令时MYSQL不会有任何提示确认信息用drop database声明删除数据库后数据库中存储的数据及数据表也会一并被删除不能恢复。
二删除数据库时需要注意什么
使用DROP DATABASE命令时要非常谨慎在执行该命令时MySQL 不会给出任何提醒确认信息。用DROP DATABASE声明删除数据库后数据库中存储的所有数据表和数据也将一同被删除而且不能恢复。
三常见的表约束
主键:主码。代表这条记录的唯一性主键是不能重复的而且不能为空。设置数据加快数据库的查询速度
主键可以由一列组成或多列组成多列最多两列。
能选一列绝对不选两列
主键的值很少更改计划不改的
primary key :
auto_increment:自增的
【oracle数据库主键不能自诊sqlserver用的是标识列】
唯一unique
非空
默认值
外键
检查约束check 【mysql 5.x不支持】 mysql8.0支持了check约束。
四聚簇索引数据和非聚簇索引地址
在MySQL中不管是InnoDB还是MyISAM都是使用B树来组织表中的数据的。但是在具体实现方法上略有不同。
InnoDB的主键索引是聚簇索引在InnoDB的实现中把主键作为关键字组织到B树的各个节点上而叶子节点上存储的是主键列的值和对应的整行数据。注意这里说的是将表中实际的一整行数据直接存到叶子节点上。
MyISAM是非聚簇索引在MyISAM的实现中叶子节点中存储的是一行数据在磁盘上的地址(可以理解为行号)。
所以聚簇索引和非聚簇索引本质的区别就是B树的叶子节点上存储的是行数据还是行数据的地址(行号)。
InnoDB中的二级索引的叶子结点中存的是索引列的值和主键值所以在使用二级索引查询的时候首先通过二级索引查找到主键值然后再根据主键值到主键索引的叶子结点中查到对应的整行数据。回表查询如果查询列全部命中索引则不需要回表
而MyISAM的二级索引的叶子节点中保存的是指向物理数据的指针因此它的主建索引和二级索引的结构并没有任何区别只是说主键索引的索引值是唯一且非空的。