• 网站优化的几点 下


    数据库访问变慢,解决方案及优化方向,如何优化mysql!
    ① 存储层 存储引擎 列类型选择 范式(三范式)
    ② 设计层 索引 缓存 分区表
    ③ sql层 使用执行效率高的sql语句,explain执行计划,慢查询日志记录
    ④架构层 分布式数据库架构, 使用多态数据库服务器,解决数据库访问并发的问题 主从复制 从服务器复制主服务器数据

    缓存设置

    1查看并开启缓存
    mysql> show variable like ‘query_cache%’;
    mysql> set global query_cache_size=64* 1024*1024; 设置缓存空间大小

    2缓存失效
    当数据表结构发生改变时,缓存会失效。(比如插入数据,及更改数据);
    3使用不到缓存的情况
    当sql语句中存在时间值或者随机数时,就会使用不到缓存
    select * ,now() from tablename where epassword like “sdfasd”;
    4生成多个缓存
    由于sql语句大小写,空格等,会被认为是多条不同的sql语句,就会生成多个缓存
    5不使用缓存
    使用sql_no_cache 语法,不使用到缓存
    select sql_no_cache * from tablename where epassword like “asfads”;
    6缓存其他操作
    ①查看缓存使用的状态
    mysql>show status like ‘Qcache%’;
    ②清空缓存
    mysql>reset query cache;

    三分表设计
    一般业务环境中,索引,缓存,内存缓存优化,能够满足大部分业务使用需要的速度。
    但大数据不能够支撑,可以选择分区表。把大数据分配到多个数据表中,以提高数据的读写速度。 分片

    分区表 分表类型
    ① 逻辑分区 分表 真实还是一个表 ,逻辑分为多个,使用sql语句和单表相同
    ②物理分表 把数据分配到几个真实数据表中,sql语句需要确定操作哪个表
    2四种格式的逻辑分表
    逻辑分区分类
    ①取余方式 key/value 会根据数据表的算法分配多个表中
    ②条件方式 range/list 数据满足某一个分表的条件,就被分配到分表。
    分表条件必须是主键或者是主键的一部分(联合主键)
    2.1key 分表
    partition by key(字段) partitions 分区数目

    partition by hash(表达式(字段)) partitions 分区数目

    partition by range(字段/表达式)(
    partition 名称1 values less than (常量),
    partition 名称2 values less than(常量),
    );

    分表管理
    数据表已经建立好,或者分区数据表后期需要增加或者删除表。 可以进行相应的数据表进行管理。

    4物理分表设计
    物理分表的方式
    ①水平分表
    ②垂直分表

    水平分表 把数据表进行横向割,数据是完整一行row。根据某个字段的取值范围。

    慢查询日志设置

    慢查询:如果执行的sql语句,返回数据时间,大于设置的事件(规定的时间),这个sql语句就被认为是一个慢查询。
    ①慢查询日志的开启,日志的位置
    mysql>show variables like ‘slow_query%’;
    mysql>set global slow_query_log =1;

    ②快慢时间临界点
    mysql>show variables like ‘long_query_time’;
    mysql> set long_query_time =1; //设置慢查询时间临界值1s

    其他优化
    在长期的数据,索引文件和数据文件,都将产生空洞,形成碎片 ,可以通过一个操作(不产生对数据实质性的影响的操作)修改表,修改表语法操作。
    通过修改表语句,进行表的碎片修复。
    optimize table 表名。
    修改表碎片需要时间,不要经常做此操作。可以周期执行。

  • 相关阅读:
    一个ball例程带你进入 Halcon 世界
    新公民读本
    open_window()到底做了什么?
    duilib学习领悟(4)
    duilib学习领悟(3)
    duilib学习领悟(2)
    通过Vue路由传参的两种方式及Vue组件中接收参数的方式
    彻底研透javascript中的对象及面向对象编程
    thinkphp5中使用phpmailer实现发送邮件功能
    小程序和ThinkPHP5结合实现登录状态(含代码)
  • 原文地址:https://www.cnblogs.com/liuqun/p/12655257.html
Copyright © 2020-2023  润新知