• 优化设计提高sql类数据库的性能


    前言

    在一个项目中,技术的统一性是最重要的,数据库的设计则是重点中的重点。NoSQL 是目前最流行的数据库,但是其实用性和功能性远不如sql数据库。

    实际很多SQL数据库被诟病的性能问题大多是源于程序员的不合理设计,一个好的设计可以使sql类数据库提高几倍的性能。

    1.细节的优化

    字段尽量设置为not null 。

    规范字段大小,越小越好。

    表名规范前缀。

    一个表尽量储存一个对象。

    char永远比varchar更高效。

    timestamp 比datetime小一倍。

    避免字串ID。

    单条查询最后用limit 1。

    不用mysql内置函数,因为不会建立查询缓存。

    使用ip而不是域名作为数据库的路径,避免dns解析。

    2.使用sql内置功能

    例如trigger,procedure,event...等等,可以有效减少后端代码的运用,但是不适合处理高触发的项目。

    3.选择适合的存储引擎

    最常见的就是InnoDB 与 MyISAM. 两者区别请自行百度。

    4.将数据保存至内存中

    从内存中读取数据,最大限度减少磁盘的操作,相关内容会在后面详细解释。

    5.提高磁盘读写速度

    6.充分使用索引 INDEX

    mysql> DROP INDEX index_name ON tab;  //添加index
    mysql> ALTER TABLE tab DROP INDEX index_name ; //删除index
    

    7.使用内存磁盘  

    现在基础设施都过硬,所以可以将sql 目录迁移到内存磁盘上。

    8.读写分离设计

    随着系统变得越来越庞大,特别是当它们拥有很差的SQL时,一台数据库服务器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离。更一般地,这意味着建立主/从副本系统,其中程序会对主库编写所有的Update、Insert和Delete变更语句,而所有Select的数据都读取自从数据库(或者多个从数据库)。

    尽管概念上很简单,但是想要合理、精确地实现并不容易,这可能需要大量的代码工作。因此,即便在开始时使用同一台数据库服务器,也要尽早计划在php中使用分离的DB连接来进行读写操作。如果正确地完成该项工作,那么系统就可以扩展到2台、3台甚至12台服务器,并具备高可用性和稳定性。

    9.使用memcache或者redis

     之前的博客有相关的介绍。

    10.SQL数据库分散式布局

    将数据库分散到多个服务器上,分担数据库工作压力。

  • 相关阅读:
    【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
    读取Webpage表中的内容
    各种排序算法的分析及java实现
    运行一个Hadoop Job所需要指定的属性
    Hbase常见异常
    Gora官方文档之二:Gora对Map-Reduce的支持
    Linux 系统挂载数据盘
    Gora快速入门
    Gora官方范例
    在Eclipse中运行Nutch2.3
  • 原文地址:https://www.cnblogs.com/peiyu1988/p/6703416.html
Copyright © 2020-2023  润新知