• 8.1 Optimization Overview


    8.1 Optimization Overview

    数据库性能取决于数据库的几个因素,如表,查询和配置设置。这些软件的结构导致CPU和I/O 操作在软件层面,

    你必须尽量减少和变的尽可能的有效。 当你再数据库性能方面工作时,你开始学习高级的rules和软件方面的指导,

    使用墙上时间来衡量。 当你成为一个专家时,你会了解关于内部的更多事情,比如测量CPU 周期和I/O操作。

    典型的用户目的是得到数据库最好的性能,基于其现有的软件和硬件配置。

    高级用户寻找改善MySQL 软件本身的机会, 或开发他们自己的存储引擎和硬件应用来扩展MySQL的生态系统。

    Optimizing at the Database Level (在数据库层面进行优化)

    让数据库应用跑的快的最重要的因素是设计:

    表结构是否正确? 特别是, 列是否有正确的数据类型,并且是否每个表有适当的列, 例如,

    1.应用执行频繁的更新有很多表的很少的列,而应用分析大量数据经常会是几个表的很多列。

    2.是否有合适的索引以提高查询效率?

    你是否对每个表使用了合适的引擎,并利用你所使用的存储引擎的优势和功能?特别是,

    一个事务性存储引擎如InnoDB或非事务如MyISAM可以选择对性能和可伸缩性很重要。

    注意:

    在MySQL 5.5 和更高的版本,InnoDB 是默认的存储引擎。在实践中,InnoDB的性能优势 意味着 InnoDB 表通常性能优于更简单的myISAM表,

    尤其是在一个繁忙的数据库:

    确保每个表使用了合适的行格式? 这个选择也取决于表使用的存储引擎。 特别的,

    压缩表使用较少的磁盘空间,因此需要较少的磁盘I/O读写。 压缩可用InnoDB表,和只读的MyISAM表。

    应用程序使用一个合适的lock策略?比如,通过允许共享访问以便数据库可以并发访问,

    在适当的时候请求排他访问, 重要的操作获得最高的权限。 再次, 存储引擎的选择是重要的。

    InnoDB 存储引擎处理大多数的锁定问题在没有侵犯你的情况下,

    允许最大的并发在数据库。

    硬件级的优化

    任何数据库应用最后都会达到硬件的限制,当数据库变的越来越繁忙时。

    一个DBA 必须评估是否可以调整应用或者重新配置服务器来避免这些瓶颈,

    或者更多的硬件资源是需要的,系统瓶颈通常来自这些来源:

    磁盘寻址, 找到一块数据需要时间。 随着现代的磁盘,这意味着通常小于10ms,

    所以我么理论上可以每秒做100个寻址。这个时间可以改善通过使用新的磁盘,但是对单个表优化很难。

    优化查找时间的方法是将数据分发到多个磁盘上。

    磁盘读写,当磁盘处于正确的位置, 当我们需要读写数据,随着现在的磁盘,

    一个磁盘至少10-20M/s的吞吐量, 这个比寻址更容易,因为你可以从多个磁盘读取。

    CPU 周期,当数据在主内存的时候, 我们必须处理它来得到我们需要的结果。

    和大表相比,内存的总量是最常见的限制因素,但是对于小表,这通常不是问题。

    内存带宽, 当CPU 需要更多的数据能够合适它的CPU cache,主内存带宽会变为一个瓶颈。

    通常这不是一个寻常的瓶颈。

  • 相关阅读:
    第十一周学习总结
    开启新的篇章——2018我的梦想
    tensorflow中的卷积和池化层(一)
    TensorFlow在win10上的安装与使用(三)
    TensorFlow在win10上的安装与使用(二)
    TensorFlow在windows10上的安装与使用(一)
    caffe设计网络教程(一)
    extern函数声明(转)
    c/c++ const 用法
    yolo类检测算法解析——yolo v3
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351448.html
Copyright © 2020-2023  润新知