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

  • 相关阅读:
    form表单的两种提交方式,submit和button的用法
    ORACLE SEQUENCE用法(转)
    hive优化
    Hive分区表创建、分类
    Hive体系结构
    Hive入门指南
    mysql统计表中条目个数的方法举例
    mysql如何快速创建相同结构的表
    VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系
    linux命令详解——lsof
  • 原文地址:https://www.cnblogs.com/t96fxi/p/12122177.html
Copyright © 2020-2023  润新知