mysql 相关面试题

MySQL存储引擎 MyISAM 和 InnoDB 的区别。

a. MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.
b. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快.
c. InnoDB不支持FULLTEXT类型的索引.
d. InnoDB中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可.
e. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
f. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
g. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用.
h. MyISAM支持表锁,InnoDB支持行锁。

说出一些MySQL优化方法?

a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysql库主从读写分离。
d. 找规律分表,减少单表中的数据量提高查询速度。
e. 添加缓存机制,比如memcached,apc等。
f. 不经常改动的页面,生成静态页面。
g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

mysql 索引失效场景

1, 查询条件包含or 只有 or 左右查询字段都是索引
2, 组合索引 最左前缀原则
3, like %通配符只能在右边
4, 字符串要加引号
5, 全表扫描比索引快

mysql 双机执备 及 负载均衡

开启mysql binlog 做 主从复制, 负载均衡 通过mysql_proxy 中间件 或者 nginx 的upstream 做负载均衡

mysql把一个大表拆分多个表后,如何解决跨表查询效率问题

Mysql千万级 大表优化

1, sql 优化 索引
2, 缓存 memcache 、 redis
3, 主从复制, 读写分离
4, 分表

参考文献

https://www.zhihu.com/question/19719997
https://blog.csdn.net/linzhiweng/article/details/72831885

猜你喜欢

转载自blog.csdn.net/qq_42271953/article/details/80867579