zoukankan      html  css  js  c++  java
  • 第十四章 mysql性能优化

    一。应用优化的口诀,解决大部分问题

    1.缓存  :redis, guava cache, openresty lua

    2.异步  :  支付宝微信的支付会提供异步回调接口,返回支付结果。支付链路很复杂,耗时长

    3.批处理:写操作

    二。mysql 单机性能提升 配置

    mysql执行变更sql时首先写undo/redo buffer->(write flush) ->undo/redo log,然后再修改文件data buffer->(flush)->data file

    1.max_connection=1000  mysql支持的socket 连接,因为有连接池固定会有连接,连接池5个连接最小,四台应用,第五台应用就连不上了,如果为20的话

    2.innodb_file_per_table=1 mysql默认是每个database一个file,这样所有表在一个文件,查询的时候寻址就会比较慢。一个表一个文件,寻址就会快

    3.innodb_buffer_pool_size=1G 扩大缓存的大小,这样写和度都快

    4.innodb_log_buffer_size=16M    write ahead log 写日志的缓冲区大小,当日志文件大小达到最大时,需要重命名再写一个新的文件,这个间隙是不能flush日志的,所以buffer不能太小,不然client端不能执行sql

    5.innodb_log_file_size=256M  写的日志大小

    三。mysql分布式性能优化

    主从分布式扩展

    1.打开bin log: 修改数据,事务提交时都会写bin log,从机根据bin log版本号来判断是否变化,然后同步过来

    2.主从同步账号配置,配置主从同步

    可以只读从机,写主机,做到分担压力

    问题:

    (1)主从机同步不是实时的会慢,比如新建了一个用户,读取时可能没同步过来,读不到。解决方法:可以jdbc驱动强制去读主库

    (2)主库内部,undo/redo log与bin log是分布式的事务,undo/redo log成功了但是bin log失败了(磁盘坏了或网络原因),这样mysql也认为事务成功了,所以

    bin log不能真正反应主库的实际情况

  • 相关阅读:
    光学镜头参数详解(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TVLine、Flare/Ghost)
    三角函数公式
    技术工人的升华
    如何在apache启动的时候不输入ssl的密码
    汉字转拼音问题
    深入PHP内核(1) 引用
    如何把普通的exe服务器程序注册成windows 服务
    如何学习Yii
    横向同步问题
    多态的内幕(C++, C)语言两个版本
  • 原文地址:https://www.cnblogs.com/t96fxi/p/12122177.html
Copyright © 2011-2022 走看看