MYSQL存储引擎innodb和myisam的区别

innodb:默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀,数据库存储在共享表空间,可以通过配置分开。对主键查询的性能高于其他类型的存储引擎。它内部做了很多优化,从磁盘读取数据时自动在内存构建hash(哈希)索引,插入数据时自动构建插入缓冲区。它可以通过一些机制和工具支持真正的热备份,支持崩溃后的安全恢复,支持行级锁,支持外键。

myisam:5.1版本前,myisam是默认的存储引擎,拥有全文索引、压缩、空间函数、不支持事务和行级锁,不支持崩溃后的安全恢复。表存储在两个文件,myd和myi。它设计简单,某些场景下性能很好。

其他表引擎:archive、blackhole、csv、memory

优先选择innodb,因为它的性能非常优秀。

mysql锁机制:表锁是日常开发当中常见的问题,因此也是面试当中最常见的考点,当多个查询同一时刻进行数据修改时,就会产生并发控制的问题。

读锁:共享的,不堵塞,多个用户可以同时读一个资源,互不干扰。

写锁:排他的,一个写锁会阻塞其他的写锁和读锁,这样可以只允许一个人进行写入,防止其他用户读取正在写入的资源。

锁力度:表锁,系统性能开销最小,会锁定整张表,myisqm使用表锁。行锁,最大程度地支持并发处理,但是也带来了最大的锁开销,innodb实现行级锁。

mysql事务处理:mysql提供事务处理的表引擎,innodb。服务器层不管理事务,由下层的引擎实现,所以同一个事务中,使用多种存储引擎不靠谱。在非事务的表上执行事务操作mysql不会发出提醒,也不会报错。

存储过程:为以后的使用而保存的一条或多条nysql语句的集合。存储过程就是有业务逻辑和流程的集合。

使用场景:通过把处理封装在容易使用的单元中,简化复杂的操作,保证数据的一致性。简化对变动的管理。

触发器:提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表时间相关的特殊的存储过程。

使用场景:可通过数据库中的相关表实现级联更改。实时监控某张表中的某个字符按的更改而需要作出响应的处理,某些业务编号的生成等。如果滥用,就会造成数据库及应用程序的维护困难。

猜你喜欢

转载自blog.csdn.net/weixin_43681591/article/details/85340187