sql优化学习 主章
来源:互联网 发布:印度 伊朗 知乎 编辑:程序博客网 时间:2024/05/20 23:31
什么影响服务器性能?
sql 查询速度
网卡流量
硬件性能
磁盘IO
QPS过高
百分之八十是因为慢查询 要对sql语句进行优化
术语说明:
QPS = req/sec = 请求数/秒 每秒钟处理SQL的查询量
【QPS计算PV和机器的方式】
QPS统计方式 [一般使用 http_load 进行统计]
QPS = 总请求数 / ( 进程总数 * 请求时间 )
QPS: 单个进程每秒请求服务器的成功次数
单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8
服务器计算
服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )
【峰值QPS和机器计算公式】
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
答:139 / 58 = 3
大量并发:数据库连接数被占满(max_connections 连接数默认100 如果超过这个限制 其他未连接上的会出现500错误)
高CPU使用率:cpu资源耗尽导致宕机
磁盘IO :使用过快的磁盘设备
网卡流量: 1 网卡IO被占满 (从服务器的数量越多需要靠缓存越多,网卡流量越大)
2 进行分级缓存
3 避免select *查询 尽量少查用不到的数据 减少流量
4 分离业务网路和服务器网络 避免主从同步时影响网络性能
大表影响 :定义:记录行数超过千万行 如果是日志之类的表 只有插入 没有查询和修改可例外 或者10G
慢查询 很难在一定时间内过滤出所需要的数据
在大量数据中查询极少量数据 区分度低->大量磁盘IO->降低磁盘效率->大量慢查询
DDL:建立索引需要很长时间 mysql<5.5 建立索引锁表 mysql>=5.5 虽不会锁表 但会引起主从延迟
修改表结构需要长时间锁表 许多插入阻塞导致数据库连接数被占满 造成长时间主从延迟 mysql>=5.6 会有多线程复制
大表处理:分库分表 (竖切) 大表数据历史归档 (横切) 好处:尽量减少对前后端业务影响
大事务影响: 原子性(全成功或全失败) 一致性 持久性(一旦提交 就是永久保存的)
极少使用 (并发性 由高到低 隔离性 由低到高)
大事务:运行时间长 操作数据多 风险:1 锁定太多数据 造成大量阻塞和锁超时 2 回滚时间长 3 执行时间长 造成主从延迟
大事务处理:避免一次处理太多数据 移出不必要在事务中的SELECT操作
阅读全文
0 0
- sql优化学习 主章
- SQL优化 ,慢慢学习
- sql优化学习
- SQL优化学习建议
- SQL优化学习目录
- 【SQL优化】MYSQL优化学习小结
- SQL优化学习(一)
- sql优化技术--学习笔记
- SQL基本知识学习和优化
- oracle sql优化学习之一
- SQL 实战学习及优化
- sql优化初步学习笔记
- sql优化方式学习总结
- 高级sql学习--sql性能优化!!!
- ORACLE SQL性能优化(学习笔记)
- Oracle 10g SQL 优化再学习
- Oracle 10g SQL 优化再学习
- Oracle 10g SQL 优化再学习
- 有关持续集成和jenkins
- android studio 开发中遇到的问题
- 一个漂亮的php验证码类(分享)
- hdu 3001 Travelling (TSP 三进制,状压dp)
- 博客开启之路
- sql优化学习 主章
- SQLite 中的递归
- 有趣的安全游戏--哈密顿行动(一)神秘的网页
- Python3 print 不输出换行
- 贝叶斯公式及例题
- 蓝牙协议分析(1)_基本概念
- nginx配置同一个域名手机端请求时跳转手机域名
- activeMQ延时发送
- AIDL数据传递 CopyOnWriteArrayList