mysql数据库编程分层_数据库调优分层思想

数据库调优分层思想

1.调优策略

1)*号的处理(只提取必要字段,减少流量)

最好是用,有用的字段,减少流量。

表结构会改变,增加或者减少某列,如果*号全部查询出来 会造成代码逻辑错误。

2)大SQL(拆分,逐步缩小结果集)

大SQL执行起来非常耗时, where 后面带子句,或者读表联合查询。 或者临时表 暂时存储结果集

3)合理的索引(where子句后面的条件)

4)类型转换(‘’符号的使用)

在进行查询操作的时候把  ‘’带上

5)尽量不要用范围查询,或者缩小检索范围(程序逻辑update)

,like,这样模糊查询,不好,

2.哪些SQL语句需要调优

1)找开发要

2)查看程序日志(接口——后台服务)

3)查看慢查询日志

4)查看统计:最多调用,最占流量,最慢查询(100ms)。。监控系统,

5)show full processlist

3.SQL配置层面

3.1 哪些配置需要关注

Query_cache:mysql自带的功能,查询的缓存, 保存的结果集, 放在缓存里

Max_connection:数据库最大链接数。 可以改动链接数,和业务程序的连接池做对应的关系。

Wait_timeout:数据每八小时检测一次,如果没有链接访问它。它就关闭了。避免这个问题,每八小时链接数据库,保证程序一直访问它

Lock :进程操作,保证另外的进程不对他做改变,所以 一个进程操作它的时候,就先锁起来,等操作完再开放给另外的进程去使用。

如果占用时间长,另外的程序就一直在等待。

解决锁的问题,一条SQL语句不能执行太长, 大SQL分解为小SQL。

4.SQL架构层面

1)主从复制(读写分离)

如果都对一个表进行读写,导致CPU飙升。压力大等。

可以把一份数据库复制到几个数据库,读的时候在从库读,写的时候放在主库。

2)分库分表

3)负载均衡

LV5,F5,nginx

负载均衡 是让压力更均匀的分布在数据库之间

4) 多级缓存

Redis

5.业务层面的思考

1) 表字段拆分

某些列不常用,甚至不用

2)text(适用key-value)

拆分出来,新建一个详情表

方便运维(DDL),便于缓存,提高查询性能

冷数据备份

每年把历史数据导出去一次,缩小检索范围

程序逻辑的处理

Update全表的例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值