关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂。对一个数据库来说,只能做到更优,不可能最优,并且由于实际需求不同,优化方案还是有所差异,所以,今天我们不妨畅所欲言聊聊你在数据库性能优化过程中有哪些独门绝技。
✎讨论问题:
您有哪些独家数据库优化技巧?
(参与形式:可发您整理的相关技术博文,可就某个数据库优化技术点讨论,也可以是您讲下您在业务处理中的一些数据库优化的习惯。可在后台留言投稿。(也可以邮件 wangnan@it168.com 、参与投稿。)
liyc444:
数据库优化工作一直是羡慕的份,自己做的比较少,但是看过很多大牛的培训资料,感觉高手一定是在架构设计、表设计、分布式以及sql改写方面的牛人。具体到自己,只能是利用工具简单的去做些工作,主要思路如下:
1、首先定位有问题的sql语句--开发人员主动告诉你,或者通过ash、awr、addm巡检检查;
2、对于有问题的sql语句检查相关引用表的统计信息是否准确(经验丰富的,通过执行计划就可判断统计信息是否准确)
3、对于有问题的sql语句,一定要看执行计划。执行计划查看方式好多种,这里只列举数据库相关的,(pl/sql dev toad等开发工具自带的可以供参考)
3.1 使用AUTOTRACE查看执行计划
3.2 explain plan for select 语句
3.3 显示高级执行计划
SELECT * FROMTABLE(DBMS_XPLAN.DISPLAY(FORMAT=>'ADVANCED -PROJECTION'));
高级执行计划可以看到QUERYBLOCK + OUTLINE DATA
3.4 显示特殊执行计划
SELECT * FROMTABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST’));
3.5 根据sqlid查看执行计划
select *
from table(dbms_xplan.display_cursor('8t2mm2acum4yk',
null,
'ADVANCED’));
4、根据执行该计划查看是否相关表走错了路径,产生笛卡儿积、有谓词推入、试图合并或者有大表被重复扫描等现象,以此来判断sql语句是建立相关索引还是
改写等来优化(改写一般需要sql开发技能及熟悉业务)
5、个人优化的一些总结
5.1 个人对sql开发技能比较差,一般对于sql优化大部分是建立索引来解决,但是索引需要了解单列索引、组合索引、函数索引、位图索引、反序索引等基本知识及应用场景。比如组合索引,那些列是适合放置在最前面的(一般是选择性较高的放置在租着索引列的最前面)
5.2对于复杂的sql语句一般使用oracle 的sql tuning advisor(STA)来进行优化。可以解决一部分比较负责的语句。
5.3 通过ADDM对于比较热的表缓存到cache中;
5.4 通过awr整体调整SGA内存大小减少物理IO;
5.5 sql改写只会一点with as。。。。
5.6 加hint提示,让sql语句走并行(一般是单表)、索引、hash、nl等连接方式来改变语句的执行计划。
6 综合来说,sql优化的本质就是检检查IO次数--可惜,只有羡慕大牛的份~
其他的oracle 可利用工具有sqlhcSQL 性能健康检查脚本 (SQLHC)(1626277.1) 及方法最佳实践:主动避免数据库和查询相关的性能问题(1549184.1
luckyrandom:
只有日常普通的方法,没有独家的方法。。继续学习
非常规套路例子:
程序里在循环内反复查询相同参数的记录,导致QPS高及CPU繁忙
程序里循环更新、插入数据,转为批量更新、插入数据
aloki:
Mysql数据库性能优化,可以从下面三点入手:数据库设计、SQL语句优化、架构优化
数据库设计优化包括:选择适当的字段类型、选择合适的引擎、适度的建立索引
SQL优化包括:使用慢日志,避免全表扫描,尽量避免在where子句中使用null值判断,不要做无谓的排序操作等
架构优化包括:合理的硬件资源和操作系统、读写分离
gycixput:
优化第一招:减少表的数据量。
优化第二招:减少数据访问量。
优化第三招:减少数据表之间关联。
看完了论坛网友的回复,
你有什么看法
欢迎在评论区留言你的优化技巧哦~
数领先机 智赢未来
DTCC2018
中国数据库技术大会(简称 DTCC)是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会,每年一届。自 2010 年以来,迄今已成功举办了八届,累计参与人次达到 20000+。DTCC 每年都将邀请百余位行业专家,就热点技术话题进行分享,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供最具价值的交流平台。
2018 年 5 月 10-12 日,第九届中国数据库技术大会(DTCC2018)将如约而至。本届大会以 “数领先机 • 智赢未来” 为主题,设定 2 大主会场及 20 个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨 Oracle、MySQL、NoSQL、大数据、机器学习、区块链、数据可视化等领域的前瞻性热点话题与技术。
点击左下阅读原文,立享购票8.8折优惠