问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请说说mysql 的存储引擎,myisam和innodb的区别

发布网友 发布时间:2022-04-02 16:07

我来回答

2个回答

热心网友 时间:2022-04-02 17:36

MyISAM和InnoDB的七大区别:

1、MySQL默认采用的是MyISAM。MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。

2、InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以MyISAM不适合于有大量查询和修改并存的情况,那样查询进程会长时间阻塞。因为MyISAM是锁表,所以某项读操作比较耗时会使其他写进程饿死。

3、InnoDB支持外键,MyISAM不支持。

4、InnoDB的主键范围更大,最大是MyISAM的2倍。

5、InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、varchar和text中的每个词(停用词除外)建立倒排序索引。MyISAM的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。

6、MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。

7、没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表。所以在InnoDB上执行count(*)时一般要伴随where,且where中要包含主键以外的索引列。为什么这里特别强调“主键以外”?因为InnoDB中primary index是和raw data存放在一起的,而secondary index则是单独存放,然后有个指针指向primary key。所以只是count(*)的话使用secondary index扫描更快,而primary key则主要在扫描索引同时要返回raw data时的作用较大。

热心网友 时间:2022-04-02 18:54

MYISAM 表是典型的数据与索引分离存储,主键和二级索引没有本质区别。比如在 MYISAM 表里主键、唯一索引是一样的,没有本质区别。
MYISAM 表的索引存储方式最大的缺点没有按照物理数据行顺序存储,这样无论对主键的检索还是对二级索引的检索都需要进行二次排序。
INNODB 表本身是索引组织表,也就是说索引就是数据。下图表T1的数据行以聚簇索引的方式展示,非叶子节点保存了主键的值,叶子节点保存了主键的值以及对应的数据行,并且每个页有分别指向前后两页的指针。
INNODB 表不同于 MYISAM,INNODB 表有自己的数据页管理,默认 16KB。MYISAM 表数据的管理依赖文件系统,比如文件系统一般默认 4KB,MYISAM 的块大小也是 4KB,MYISAM 表的没有自己的一套崩溃恢复机制,全部依赖于文件系统。
INNODB 表这样设计的优点有两个:
1. 数据按照主键顺序存储。主键的顺序也就是记录行的物理顺序,相比指向数据行指针的存放方式,避免了再次排序。
2. 两个叶子节点分别含有指向前后两个节点的指针,这样在插入新行或者进行页*时,只需要移动对应的指针即可。
但是也有缺点:
1. 二级索引由于同时保存了主键值,体积会变大。特别是主键设计不合理的时候,比如用 UUID 做主键。
2. 对二级索引的检索需要检索两次索引树。第一次通过检索二级索引叶子节点,找到过滤行对应的主键值;第二次通过这个主键的值去聚簇索引中查找对应的行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸自驾游到青岛马壕运河遗址推荐线路 株洲自驾到青岛马壕运河遗址途径地方 梧州回青岛马壕运河遗址要几个小时 石嘴山到青岛马壕运河遗址要多少油钱 可不可以用开水敷脸 开水能不能敷脸 发动机和发电机区别?? 电音之王朴智妍MV的图片? 电音之王mv里跳舞的是谁 自己怎样开网站 怎样把一个网页设置为主页 做梦梦见被朋友的狗咬住皮股不松囗 梦到被狗咬住双手不松口 学生个人总结怎么写? 学生个人基本情况一般写什么 梦见被狗咬咬住不放 学生个人自我总结怎么写 学生个人事迹300字怎么写 学生个人自评及整改措施有哪些? 学生个人评语怎么写? 学生的个体情况主要包括哪些方面 学生个人不足之处和改进措施有哪些? 学生个人基本情况一般写什么? 蓝牙耳机总是自动断开是什么原因? 为什么有的wifi没有密码也连不上 连接没有密码的wifi会有风险吗? 手机连接无密码的WIFI安全吗? 连接没有密码无线网真的有安全隐患吗? 没有设置密码的wifi能用吗?安全吗? 1988年农历9月19日出生的人的命运如何? 怎么有人说农历庚子年冬月十九日辰时出生的男孩五行缺金和水? 别人要转账到我支付宝,可是显示了这个东西,对方说转不到,然后我去设置实名制但又显示未满16周岁无法 我未满16周岁。支付宝别人是不是不可以转账给我? 别人通过支付宝转账 转到我的支付宝上 钱被冻结了 让我实名认证 我没满18岁 不能认证 怎么办 我支付宝要验证身份证,我没有18岁。还能用吗?不验证别人转账的钱给不了我 未满18岁别人用支付宝转账给我.我是邮政的卡为什么我不能转给别人. 别人给我支付宝转账转不了怎么办,说我支付宝设置了隐私可是我没有啊 为什么我的支付宝别人转账不了给我 我未满十八岁,用手机卡注册了一个支付宝,别人可以转账给我吗 我的支付宝别人不能给我转账,收款被限制,怎么解决? 支付宝未满18岁 不给认证吗? 不能人家转账给我? 别人给我支付宝转账,转不了显示下面的。怎么回事 这个是为什么,为什么别人给我支付宝转账,转不了 因为未满18岁没有银行卡所以支付宝的实名制就弄不了 我想知道新版的支付宝没实名制别人可以转账给我吗 稀里糊涂反义词 糊里糊涂的意思? 中央的反义词是什么?朦胧的反义词又是什么? cdr里面多页面的文件怎么一次性选全部页面文字并转曲? cdr中用输出eps将文字转曲有何优缺点? cdr里面怎么样将文字全部转曲 cdr中一个文件中的文字能不能全部转曲