mysql数据库优化面试题有哪些?mysql数据库优化面试题

MySQL 是最流行的关系型数据库管理系统,是实际工作中最常见的数据库类型,所以做Java岗位,mysql数据库是必须要考核的,那mysql数据库优化面试题有哪些?今天我们就给大家分享一些mysql数据库优化面试题。

1.为什么要优化?

系统的吞吐量瓶颈往往出现在数据库的访问速度上;

随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢;

数据是存放在磁盘上的,读写速度无法和内存相比;

优化原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。

2. MySQL数据库cpu飙升到500%的话他怎么处理?

当 cpu 飙升到 500%时,先用操作系统命令 top 命令观察是不是 mysqld 占用导致的,如果不是,找出占用高的进程,并进行相关处理。

如果是 mysqld 造成的, show processlist,看看里面跑的 session 情况,是不是有消耗资源的 sql 在运行。找出消耗高的 sql,看看执行计划是否准确, index 是否缺失,或者实在是数据量太大造成。

一般来说,肯定要 kill 掉这些线程(同时观察 cpu 使用率是否下降),等进行相应的调整(比如说加索引、改 sql、改内存参数)之后,再重新跑这些 SQL。

也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等。

3.说说对SQL语句优化有哪些方法?

Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。

用EXISTS替代IN、用NOT EXISTS替代NOT IN。

避免在索引列上使用计算;

避免在索引列上使用IS NULL和IS NOT NULL;

对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描;

应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描;

4.MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。

选择合适的表字段数据类型和存储引擎,适当的添加索引。

mysql库主从读写分离。

找规律分表,减少单表中的数据量提高查询速度。

添加缓存机制,比如memcached,apc等。

不经常改动的页面,生成静态页面。

书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

WEB 应用方面 MySQL 是最好的关系数据库管理系统应用软件之一,所以大家一定要掌握MySQL知识,学会应用 MySQL。最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。

推荐阅读:

json的使用方法是什么?Json怎么理解?

javabean组件特性是什么?有什么优点?

java入门基础课程有哪些?java入门基础课程分享