前言:
因此二飞特意整理了一些MySQL的常见问题给大家:
存储引擎
-
是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。
-
是否支持事务和崩溃后的安全恢复:MyISAM 强调的是性能,每次查询具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
-
是否支持外键: MyISAM不支持,而InnoDB支持。
是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用乐观(optimistic)锁和悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。
这句话对吗?
字符集及校对规则
字符集指的是一种从二进制编码到某类字符符号的映射。校对规则则是指某种字符集下的排序规则。MySQL中每一种字符集都会对应一系列的校对规则。MySQL采用的是类似继承的方式指定字符集的默认值,每个数据库以及每张数据表都有自己的默认值,他们逐层继承。
索引
InnoDB: 其数据文件本身就是索引文件。
查询缓存的使用
执行查询语句的时候,会先查询缓存。不过,MySQL 8.0 版本后移除,因为这个功能不太实用
my.cnf加入以下配置,重启MySQL开启查询缓存
query_cache_type=1
query_cache_size=600000
set global query_cache_type=1;
set global query_cache_size=600000;
select sql_no_cache count(*) from usr;
原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
并发事务带来哪些问题?
脏读(Dirty read)丢失修改(Lost to modify)不可重复读(Unrepeatableread)幻读(Phantom read)
关于MySQL,我们还要知道的是:
为了让各位同学熟练掌握MySQL,我们特别邀请大数据平台资深专家Deer老师,为大家带来MySQL专题课程—— “面试修仙季,MySql优化从基础到落地”,原价99元,公众号粉丝限时专享优惠价0.1元!
Deer老师:
享学课堂大数据平台负责人与课程设计总监
专精领域:项目管理,大数据平台管理与开发;
软件开发十年,获sun公司scjp、scwcd国际认证。
慢查询以及工具
SQL优化全家桶
执行计划全面解析
优化10大策略
从二叉树开始谈索引面试必问,脏读、可重复度、幻读
四大隔离级别解析
眼界大开,存储引擎大全
"愿你所有的努力都不会白费"
转载:https://blog.csdn.net/hollis_chuang/article/details/101442878