公司网站制作的费用申请,做爰视频网站在线看,维持一个素材网站要多少钱,博客wordpress模版8.0分析回答
区别很多#xff0c;大家说出下面几点#xff0c;面试就应该 OK 了
1) 事务支持
MyISAM不支持事务#xff0c;而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的#xff0c;即每条SQL语句会默认被封装成一个事务#xff0c;自动提交#xff0c;这样会影响速…分析回答
区别很多大家说出下面几点面试就应该 OK 了
1) 事务支持
MyISAM不支持事务而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的即每条SQL语句会默认被封装成一个事务自动提交这样会影响速度所以最好是把多条SQL语句显示放在begin和commit之间组成一个事务去提交。
MyISAM是非事务安全型的而InnoDB是事务安全型的默认开启自动提交宜合并事务一同提交减小数据库多次提交导致的开销大大提高性能。
2) 外键
外键 ( foreign key ) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中可创建两个表之间的链接。这个列就成为第二个表的外键。
MyISAM不支持InnoDB支持
3) 表锁差异
MyISAM只支持表级锁用户在操作myisam表时selectupdatedeleteinsert语句都会给表自动加锁如果加锁以后的表满足insert并发的情况下可以在表的尾部插入新的数据。 InnoDB支持事务和行级锁是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁只是在WHERE的主键是有效的非主键的WHERE都会锁全表的。
MyISAM锁的粒度是表级而InnoDB支持行级锁定。简单来说就是, InnoDB支持数据行锁定而MyISAM不支持行锁定只支持锁定整个表。即MyISAM同一个表上的读锁和写锁是互斥的MyISAM并发读写时如果等待队列中既有读请求又有写请求默认写请求的优先级高即使读请求先到所以MyISAM不适合于有大量查询和修改并存的情况那样查询进程会长时间阻塞。因为MyISAM是锁表所以某项读操作比较耗时会使其他写进程饿死。
4) 全文索引
MyISAM支持(FULLTEXT类型的)全文索引\InnoDB之前不支持(FULLTEXT类型的)全文索引5.6版本之后InnoDB存储引擎开始支持全文索引。5.7版本之后通过使用ngram插件开始支持中文。
全文索引是指对char、varchar和text中的每个词停用词除外建立倒排序索引。MyISAM的全文索引其实没啥用因为它不支持中文分词必须由使用者分词后加入空格再写到数据表里而且少于4个汉字的词会和停用词一样被忽略掉。
另外MyIsam索引和数据分离InnoDB在一起MyIsam天生非聚簇索引最多有一个unique的性质InnoDB的数据文件本身就是主键索引文件这样的索引被称为“聚簇索引”
5) CURD操作
MyISAM如果执行大量的SELECTMyISAM是更好的选择。MyISAM内置了一个计数器保存有表的总行数。 InnoDB如果你的数据执行大量的INSERT或UPDATE出于性能方面的考虑应该使用InnoDB表。DELETE 从性能上InnoDB更优但DELETE FROM table时InnoDB不会重新建立表而是一行一行的删除在innodb上如果要清空保存有大量数据的表最好使用truncate table这个命令。
反思扩展
MyISAM和InnoDB两者的应用场景
MyISAM管理非事务表。它提供高速存储和检索以及全文搜索能力。如果应用中需要执行大量的SELECT查询那么MyISAM是更好的选择。InnoDB用于事务处理应用程序具有众多特性包括ACID事务支持、存储 过程、视图、行级锁定等等。如果应用中需要执行大量的INSERT或UPDATE操作则应该使用InnoDB这样可以提高多用户并发操作的性能。
MySQL支持三种模式的全文检索模式
自然语言模式通过MATCH AGAINST 传递某个特定的字符串进行检索布尔模式可以为检索的字符串增加操作符“”表示必须包含、“-”表示必须排除、“”表示出现该单词时增加相关性、“”表示出现该单词时降低相关性、“*”表示通配符、“~”允许出现该单词等查询扩展模式
InnoDB全文索引是如何实现的 喵呜面试助手一站式解决面试问题你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] - 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享