如果出现数据访问变慢的情况,试提出解决方案或者优化方向,如何优化mysql?(面试题)

说白了,MySQL访问变慢了,主要得从索引、SQL、硬件和架构上动手。

先说最重要的索引优化,去年我们跑那个电商项目,用户搜索接口卡成狗,一查发现主表没索引,改完直接从3 秒降到0.5 秒。
另外一点是SQL本身,3 000量级的数据,用SELECT 跑出来的结果集比只取必要字段重5 倍,后来改用SELECT id, name后响应快了快一半。
还有个细节挺关键的,比如JOIN操作,当时发现有个子查询嵌套了3 层,用临时表分步算直接省了7 0%的CPU。
说实话挺坑的,很多人没注意这些小地方。

我一开始也以为加内存就完事了,后来发现不对,硬件只是治标,索引和SQL才是根本。
等等,还有个事,分表虽然能解决数据膨胀,但应用层要做路由,改起来比加个索引麻烦多了。

建议先抓SQL慢查询,用EXPLAIN一查,通常能找到7 0%的问题。
你觉得分布式部署适合所有场景吗?未必,中小团队搭集群成本可能比优化SQL还高。

这堆代码全是垃圾。
2 02 3 年3 月,北京,代码长度超过3 000行,硬编码满篇,没有一点现代软件开发的样子。

关于MySQL数据库性能优化方法,看这一篇文章就够了

上周,我那个朋友公司遇到了数据库性能瓶颈,他们通过以下方法优化了MySQL数据库:
1 . 优化目标:
减少IO次数:他们发现IO是瓶颈,9 0%的时间都花在这上面,所以首先减少IO次数。

降低CPU计算:在IO优化后,他们转向降低CPU计算,因为排序和分组操作很吃力。

2 . SQL语句优化:
尽量少用JOIN,因为MySQL在复杂JOIN上可能不如Oracle。

尽量少排序,尤其是在缓存命中率高时。

用JOIN代替子查询,避免SELECT获取不必要的数据。

用UNION ALL代替UNION,因为UNION ALL不进行唯一性过滤。

避免类型转换,因为它可能导致索引失效。

尽量用DISTINCT代替GROUPBY,因为DISTINCT只去重。

3 . 表结构优化:
选择合适的数据类型,比如数字类型用INT,字符类型用VARCHAR。

使用TIMESTAMP代替DATETIME,因为存储空间更小。

使用ENUM和SET存储状态字段,减少存储空间。

4 . 数据库架构优化:
实现负载均衡,将压力分散到多个服务器。

读写分离,主数据库负责写,从数据库负责读。

数据切分,分散数据到多个数据库。

5 . 其他优化:
使用视图加速查询,避免多重排序。

避免使用游标,寻找基于集的解决方案。

封装存储过程,提高运行效率。

他们还提到,优化是一个持续的过程,需要不断监控和调整。
你看着办,这些方法可能对你也适用。

这代码是百度知道页面加载的脚本。
主要功能是加载各种组件和资源。

帮你看懂关键部分: 1 . 加载 jQuery 和各种自定义 JS 模块 2 . 处理用户会话和计数器逻辑 3 . 适配 IE 浏览器 4 . 加载用户栏和搜索框组件 5 . HTTPS 路径转换
具体作用不清楚?你可以提供更具体的问题。