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不能真正反应主库的实际情况

  • 相关阅读:
    SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
    T-SQL 之 概述
    HTML 之 Web页面表单form中只有一个input的text元素,按回车默认提交
    CollatingOfData 之 JsonHelper
    JavaScript 之 弹出窗口总结
    JavaScript 之 页面跳转及Frame动态加载
    XML 之 与Json或String的相互转换
    UML 之 类图(Class Dragram)
    Asp.Net 之 调用分享接口
    echo print() print_r() var_dump()的区别
  • 原文地址:https://www.cnblogs.com/t96fxi/p/12122177.html
Copyright © 2011-2022 走看看