• 构建高性能可扩展数据库


    一、数据库基本设计规范

    1.数据库对象的命名规范要做到见名识义

    2.所有存储相同数据的列名和列类型必须一致

    3.禁止在数据库中存储图片,文件等二进制数据(因为比较大);

    禁止在线上做数据库压力测试;

    禁止从开发环境和测试环境直连生产环境数据库(因为这会对生产环境的数据库造成破坏,这点非常重要)

    二、索引设计规范

    索引是一把双刃剑,好的索引可以提高数据库性能,但滥用索引也会造成性能下降

    1.记住不要滥用索引,单表索引最好不要超过5个 (索引并不是越多越好)

    2.Innodb是一种索引组织表,每个innodb表都应该有一个主键。一般就可以使用数据库自增的id为主键。

    常见问题:

    我们应该在哪些列上建立索引?

    1. 包含SELECT、 DELETE、 UPDATE语句的WHERE从句中的列包含在ORDER BY 、GROUP BY、 DISTINCT中的字段

    2.多表JOIN的关联列

    三、数据库字段设计规范

    1.要优先选择符合存储的最小的数据类型:将字符串转换为数字类型存储

    四、sql的执行计划

    执行计划的查看是进行数据库的sql语句调优时依据的一个重要依据。sql的执行计划可以告诉我们mysql优化器如果执行我们的sql请求,具体包括:

    1.SQL如何使用索引

    2.联接查询的执行顺序

    3.查询扫描的数据行数 (看sql有没有使用正确的索引)

    sql执行时不一定会按照我们写的sql顺序进行关联,有时候会根据索引,来改变顺序

    五、MySQL优化

    mysql优化常用步骤:

    1)利用一些Linux常用的命令来查看Mysql对服务器的CUP和I/O使用情况,

    2)通过慢查询日志找出有待优化的sql,

    3)通过show processlist查看正在执行的sql的情况以及及时kill死锁的sql,

    4)通过EXPLAIN分析需要优化的sql语句。当然也对Mysql内部配置做了一些调整。

    使用 explain 分析 SQL 执行情况。

    explain select * from ip;
    
    +----+-------------+-------+------+---------------+------+---------+------+------+-------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |
    +----+-------------+-------+------+---------------+------+---------+------+------+-------+
    |  1 | SIMPLE      | ip    | ALL  | NULL          | NULL | NULL    | NULL |  400 | NULL  |
    +----+-------------+-------+------+---------------+------+---------+------+------+-------+

    select_typetabletypepossible_keyskeykey_lenrowsExtra
    表示查询的类型 输出结果集的表 表示表的连接类型 表示查询时,可能使用的索引 表示实际使用的索引 索引字段的长度 扫描出的行数(估算的行数) 执行情况的描述和说明

    1.性能瓶颈定位:

  • 相关阅读:
    struts2.3.15之文件上传与下载
    hibernate4.2.4之环境搭建与测试实例
    spring4.0.0之环境搭建
    struts2.3.15之表单提交与表单验证
    iptables详解说明
    lvs+keepalived+application部署(只使用两台机器)
    Linux的awk 中的while do-while for循环
    Linux下 expect 使用详解与实例
    Linux shell批量执行scp脚本工具
    Linux服务器TIME_WAIT进程的解决与原因
  • 原文地址:https://www.cnblogs.com/shawshawwan/p/8824694.html
Copyright © 2020-2023  润新知