阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 26320阅读
  • 54回复

[活动/公告]DBA专家门诊一期:索引与sql优化

级别: 新人
发帖
16
云币
25
只看该作者 30楼 发表于: 2014-12-23
回5楼蓝雨麦浪的帖子
我也是这样,简单的会,仔细写也会写出来,但是就是不知道有没有更快或者更好的
级别: 小白
发帖
9
云币
11
只看该作者 31楼 发表于: 2014-12-23
ReDBA专家门诊一期:索引与sql优化
对于多维度分类(七八个分类甚至十几个,或叫标签也成),同时又需要排序的内容(文章内容也很大),大家有什么好的建议 w7"Z @$fs  
qf9.S)H1Z  
对于这类应用,我很想分表,但又需要排序,所以纠结中.... ge[+/$(1  
LRv-q{jP;  
至少我目前是将文章内容分出去了,不过一到查询文章内容排序的时候问题就又来了
级别: 小白
发帖
1
云币
1
只看该作者 32楼 发表于: 2014-12-23
ReDBA专家门诊一期:索引与sql优化
可以详细说明一下“最后建议不要在数据库中使用外键,让应用程序来保证。 ”的原因吗?我们公司在项目中经常使用外键,用程序来保证不是相对而言更加复杂了吗?
级别: 小白
发帖
1
云币
1
只看该作者 33楼 发表于: 2014-12-23
ReDBA专家门诊一期:索引与sql优化
十分想请大师分享下建立索引的经验 6lq7zi}'w  
我平时简历索引是这样的 JMOQDo  
比如订单信息的话 S0g5Ym ia  
建立 [cru+c+O:  
订单号  唯一聚集索引 q=}Lm;r  
其他的比如   客户编号 供应商编号 商品编号 这些建立非聚集不唯一索引 仅此而已 想更深入的跟大师学学
发帖
80
云币
73
只看该作者 34楼 发表于: 2014-12-23
回 32楼(veeeye) 的帖子
可以详细说明一下“最后建议不要在数据库中使用外键,让应用程序来保证。 ”的原因吗?我们公司在项目中经常使用外键,用程序来保证不是相对而言更加复杂了吗? q[1H=+  
i?'HVx  
这里的不建议使用外键,主要考虑到 : * C~  
第一.维护成本上,把一些业务逻辑交由数据库来保证,当业务需求发生改动的时候,需要同时考虑应用程序和数据库,有时候一些数据库变更或者bug,可能会导致外键的失效;同时也给数据库的管理人员带来维护的麻烦,不便于管理。 u sR19_E-  
第二.性能上考虑,当大量数据写入的时候,外键肯定会带来一定的性能损耗,当出现这样的问题时候,再来改造去除外键,真的就不值得了; [={pF q`  
2sy{  
C 1|e1  
最后,不在数据库中参与业务的计算(存储过程,函数,触发器,外键),是保证数据库运行稳定的一个好的最佳实践。
RDS DBA
发帖
80
云币
73
只看该作者 35楼 发表于: 2014-12-23
回 33楼(优雅的固执) 的帖子
ReDBA专家门诊一期:索引与sql优化 E^1uZI\z  
十分想请大师分享下建立索引的经验 }N2T/U  
我平时简历索引是这样的 O<iE,PN)  
比如订单信息的话 z:RwCd1\  
建立 WsJ3zZc  
订单号  唯一聚集索引 ~Rk6@&ZS}  
其他的比如   客户编号 供应商编号 商品编号 这些建立非聚集不唯一索引   vay_QxB5  
/r[0Dw  
################################################## He)v:AH  
M`Y~IG}  
aMZ6C <N  
建立索引,需要根据你的SQL语句来进行创建,不是每一个字段都需要进行创建,也不是一个索引都不创建,,可以把你的SQL语句,应用场景发出来看看。 G}BO!Z6  
m,Q<4'  
索引的创建确实是一个非常专业的技术活,需要掌握:表的存储方式,索引的原理,数据库的优化器,统计信息,最后还需要能够读懂数据库的执行计划,以此来判断索引是否创建正确; b&HA_G4  
所以需要进行系统的学习才能掌握,附件是我在2011年的时候的一次公开课的ppt,希望对你有帮助,同时可以把你平时遇到的索引创建的疑惑发到论坛上来,大家可以一起交流。 e]uk}#4  
2!7wGXm~U  
i?qS8h{  
7AV!v`  
Sw%=/g  
]*%0CDY6`N  
B6MMn.  
mysql索引与sql调优 (1).pdf (1457 K) 下载次数:206 d=xU f`^  
=MB[v/M59w  
[ 此帖被玄惭在2014-12-23 20:53重新编辑 ]
RDS DBA
发帖
80
云币
73
只看该作者 36楼 发表于: 2014-12-23
回 30楼(几几届) 的帖子
我也是这样,简单的会,仔细写也会写出来,但是就是不知道有没有更快或者更好的 Le;;Yd}f  
b3R1L|@  
#################################################### aF*KY<w  
多写写SQL,掌握SQL优化的方法,自然这些问题不在话下了。
RDS DBA
级别: 小白
发帖
8
云币
5
只看该作者 37楼 发表于: 2014-12-23
ReDBA专家门诊一期:索引与sql优化
电商项目中有这样一张表(使用的mysql),一共76个字段,其中有12个字段需要用于比较频繁的搜索(并且有3个字段需要进行模糊匹配搜索),我有两个问题: o\/&05rp]  
(1)如何建立索引可以加快查询速度? TF]bmM})0  
(2)如果不使用全文索引,有没有什么替代方案,可以解决模糊匹配搜索的问题(比如select * from t where name like '%words%') 9NF2a)&~  
谢谢大师
级别: 技术砖家
发帖
941
云币
3438
只看该作者 38楼 发表于: 2014-12-23
回 36楼(玄惭) 的帖子
你怎么能这么谦虚呢,大家都在努力膜拜呢
级别: 技术砖家
发帖
941
云币
3438
只看该作者 39楼 发表于: 2014-12-23
回 37楼(jeancandoit) 的帖子
如果这类查询很多,建议就不要查库了,考虑使用更专业的检索工具,比如Lucence
级别: 小白
发帖
2
云币
2
只看该作者 40楼 发表于: 2014-12-24
ReDBA专家门诊一期:索引与sql优化
mysql如何查询需要优化的语句,比如慢查询的步奏,如何找出需要通知程序员修改或者优化的sql语句,如何快速找到mysql瓶颈
级别: 架构狮
发帖
1490
云币
1775
只看该作者 41楼 发表于: 2014-12-24
  1. <%
  2. Set conn=Server.CreateObject("ADODB.CONNECTION")
  3. Set rs=Server.CreateObject("ADODB.RecordSet")
  4. conn.open Application("sjjh_usermdb")
  5. rs.Open "Select * from sjjh_jhjl  Order by a DESC", conn, 1,1
  6. do while not rs.bof and not rs.eof
  7. %>
  8.   <tr bgcolor="" onMouseOver="this.bgColor='#85C2E0';" onMouseOut="this.bgColor='';">
  9.     <td align="center"><%=rs("a")%></td>
  10.     <td align="left"><%=rs("d")%></td>
  11.   </tr>
  12. <%
  13. rs.movenext
  14. loop
  15. rs.close
  16. set rs=nothing
  17. conn.close
  18. set conn=nothing
  19. %>
代码二: 8Z_ 4%vUBg  
  1. <%
  2. rs.open "select top 10 jh_name,jh_peiou from sjjh_jhuser where jh_zt='正常' and jh_sex='男' and jh_peiou<>'无' order by jh_jhdate desc",conn,1,1
  3. %>
  4. <font color="#38e9f2"><b>江湖10对金婚</b></font><br />
  5. <%do while not rs.eof
  6. x=x+1%>
  7. <%=rs("jh_name")%><br />
  8. (<%=rs("jh_peiou")%>)<br />
  9. <%
  10. if x=10 then exit do
  11. rs.movenext
  12. loop
  13. rs.close
  14. x=0%>
楼主 我这两段代码的数据调用有问题么? asp+mssql Z]R#F0"U  
H<n"[u^@E  
级别: 小白
发帖
18
云币
209
只看该作者 42楼 发表于: 2014-12-24
ReDBA专家门诊一期:索引与sql优化
顶,学习中。。。
发帖
80
云币
73
只看该作者 43楼 发表于: 2014-12-24
回 40楼(小林阿小林) 的帖子
mysql如何查询需要优化的语句,比如慢查询的步奏,如何找出需要通知程序员修改或者优化的sql语句 85H \v_[  
############################################################ qf\W,SM  
可以将mysql的慢日志打开,就可以记录执行时间超过指定阀值的慢SQL到本地文件或者数据库的slow_log表中; SU4i'o  
在RDS中默认是打开了慢日志功能的:long_query_time=1,表示会记录执行时间>=1秒的慢sql; oV0 45G  
CN:T$ f|)  
如何快速找到mysql瓶颈: nL/]Q'(5  
简单一点的方法,可以通过监控mysql所在主机的性能(CPU,IO,load等)以及mysql本身的一些状态值(connections,thread running,qps,命中率等); o}114X4q;  
RDS提供了完善的数据库监控体系,包括了CPU,IOPS,Disk,Connections,QPS,可以重点关注cpu,IO,connections,disk 4个 指标; "4H@&:-(p  
cpu,io,connections主要体现在了性能瓶颈,disk主要体现了空间瓶颈; 3MNM<Ih  
X1`3KqK<9  
有时候一条慢sql语句的频繁调用,也可能导致整个实例的cpu,io,connections达到100%;也有可能一条排序的sql语句,消耗大量的临时空间,导致实例的空间消耗完。 lMGO4U[z  
RDS DBA
发帖
80
云币
73
只看该作者 44楼 发表于: 2014-12-24
下面是分析一个cpu 100%的案例分析:该实例的cpu已经到达100% TmV,&['mg  
j?x>_#tIY  
?}U(3  
zp%Cr.)$  
;k>&FWEG  
&b fA.& `  
查看当前数据库的活动会话信息:当前数据库有较多的活跃线程在数据库中执行 2-Ej4I~  
zIu E9l  
查看当前数据库正在执行的sql: /*X2c6<d  
=aBctd:eX`  
OZ~5*v  
可以看到这条sql执行的非常缓慢: O#S;q5L@  
[tr=rgb(100, 204, 255)]delete from task_process where task_id='1801099' ^Uf]Q$uCjE  
E4~<V=2l  
m;GbLncA  
查看这个表的索引: 7KAO+\)H^Y  
IV\'e}  
CREATE TABLE `task_process` ( q$B>|y U  
  `id` int(11) NOT NULL AUTO_INCREMENT, O\"3J(y,  
    ................ :?g:~+hfO  
  `task_id` int(11) NOT NULL DEFAULT '0' COMMENT '??????id', 0dGAP  
   ................ ECrex>zr%  
  PRIMARY KEY (`id`), rLI8pA|.  
  KEY `index_over_task` (`is_over`,`task_id`), Y STv\y  
  KEY `index_over` (`is_over`,`is_auto`) USING BTREE, t>`a sL  
  KEY `index_process_sn` (`process_sn`,`is_over`) USING BTREE { + Zd*)M[  
) ENGINE=InnoDB AUTO_INCREMENT=32129710; uF9C -H@:  
|ZRagn30  
?&63#B,iZ  
可以看到这个表有3KW的数据,但是没有task_id字段开头的索引,导致该sql语句删除需要进行全表扫描: 4'a=pnE$  
;; C?{  
=E.t`x=  
在我们的诊断报告中已经将该sql语句捕获到,同时给你提出该怎样进行索引的添加。 CsoiyY -2  
r0+6evU2  
X[&Wkr8x '  
广告:诊断报告将会在1月底发布到控制台,到时候用户可以直接查看诊断建议,来完成你的数据库优化。 V@ cM|(  
[ 此帖被玄惭在2014-12-24 10:18重新编辑 ]
RDS DBA
发表主题 回复主题
« 返回列表
«1234»
共4页
上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)