数据库性能简介

下文翻译自:https://dev.mysql.com/doc/refman/5.7/en/optimize-overview.html

  数据库的性能取决于数据库级别的几个因素:如表,查询,配置设置。这种软件构造导致在硬件级的CPU和I/O操作必须最小话并且高效。在处理数据库性能时,首先需要学习软件端的高级规则和指南,然后使用wall-clock 来衡量性能。

  Tipical 用户指在通过现有的软件和硬件配置获取最佳的性能,Advanced 用户则寻找改进Mysql软件本身的机会,或者自己开发存储引擎和硬件设备来扩展MYSQL的生态体系
数据库级别的优化

  使数据库查询快的最重要的因素在于其开始设计阶段:

  1、表的结构是否合理?特别需要指出的是,列在表中是否使用正确的类型?例如:经常需要进行更新的表需要设计成多表少列,而需要大量分析的表需要设计成少表多列。

  2、是否使用索引来让查询更加高效?

  3、是否为每个表选择适当的存储引擎,并利用存储引用的优势和功能?需要强调的是:事务存储引擎(innodb,myisam:非事务)的选择对于性能和扩展性是非常重要的

  4、每张表是否使用正确的行格式,这个行格式还和存储引擎有关。强调的是压缩表使用较少的磁盘空间,因此使用较少的磁盘I/O来读取和写入数据,压缩可用于innodb的表和只读的myisam表

  5、应用程序是否使用了正确的锁策略?比如,在可能的情况下,通过允许数据共享的方式,以便数据库可以并发运行,并在适当的情况下独立请求,以便关键操作获得最高的优先级。同样,存储引擎的选择是很重要的,Innodb存储引擎可以处理大多的锁问题,无需要调用程序的参与,在数据库中实现更好的并发性,并减少参与测试和代码调试。

  6、用于缓存的所有内存区域是否使用正确?也就是说,需要足够大的内存来容纳经常访问的数据,但这个内存也不能超过物理内存并导致分页。要配置的内存区域主要有:InnoDB缓存池,myisam密钥缓存和mysql查询缓存。

硬件级别的优化

  随着数据库变得越来越繁忙,任何数据库应用最终都会遇到硬件瓶颈。DBA必须评估是否可以重新配置来避免这种瓶颈,或是否需要更多的硬件资源。系统的硬件瓶颈通常来自如下几方面:

  1、磁盘搜索,磁盘找到一条数据需要花费时间。对于现代的磁盘,平均时间通常低于10ms,因此理论上一秒钟可以寻找100次。使用磁盘来进行优化会很缓慢并且很难针对单个表进行优化,优化寻道时间的方法是将数据分布到多个磁盘上。

  2、磁盘读写,当磁盘在正确的位置时,我们需要读写数据。对于现代的磁盘,一个磁盘通常可以提供20M/s的吞吐量,这比查找更容易去优化,可以通过多个磁盘并行来读取

  3、CPU周期,当数据存储在内存中,我们需要去处理并且获取结果。内存大小相比大表的数据量,是最常见的限制因素,使用小表,速度通常不是问题。

  4、内存带宽,当cpu可以缓存更多的数据的时候,内存带宽就会成为瓶颈,这个对于大多数系统来说并不常见,但需要考虑。

时间: 2025-01-01 08:36:05

数据库性能简介的相关文章

MySQL数据库之简介和安装

一.基础部分 1.数据库是简介     之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上. 如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题 但需要考虑的问题是:程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,垂直扩展是有极限的.于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行. 需要注

关系型数据库与非关系型数据库的简介、对比、说明

关系型数据库与非关系型数据库的简介.对比和说明!!! 分类专栏:数据库 数据库MySQL的系列知识 关系型数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系型数据库:关系型数据库与非关系型数据库的对比 MongoDB Cassandra CouchDB Hypertable Redis Riak Neo4j Hadoop HBase Couchbase MemcacheDB REVENDB Vo

Mysql数据库性能优化(一)

参考 http://www.jb51.net/article/82254.htm 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库. mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面

架构设计:系统存储(8)——MySQL数据库性能优化(4)

================================ (接上文<架构设计:系统存储(7)--MySQL数据库性能优化(3)>) 4-3.InnoDB中的锁 虽然锁机制是InnoDB引擎中为了保证事务性而自然存在的,在索引.表结构.配置参数一定的前提下,InnoDB引擎加锁过程是一样的,所以理论上来说也就不存在"锁机制能够提升性能"这样的说法.但如果技术人员不理解InnoDB中的锁机制或者混乱.错误的索引定义和同样混乱的SQL写操作语句共同作用,那么导致死锁出现的

数据库性能优化、统计信息与对象统计信息概述收集、扩展统计信息、dbms_stats.get_prefs

数据库性能优化 相关书籍: 1.基于成本的Oracle优化法则 2.Oracle性能诊断艺术 3.基于Oracle的SQL优化 ----------------------------------------------------------------------------------------- 两种优化器: CBO  cost-base optimizer 基于cost 更大适应性/灵活性/10g开始 RBO  rule-base optimizer 基于规则 制定了15条/10g以

SQL Server数据库性能优化之SQL语句篇(转载)

SQL Server数据库性能优化之SQL语句篇 原文地址:http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 期项目需要,做了一段时间的SQL Server性能优化,遇到了一些问题,也积累了一些经验,现总结一下,与君共享.SQL Server性能优化涉及到许多方面,如良好的系统和数据库设计,优质的SQL编写,合适的数据表索引设计,甚至各种硬件因素:网络性能.服务器的性能.操作系统的性能,甚至网卡.交换机等.这篇文章主

5. SQL Server数据库性能监控 - 当前请求

对于在线运行的系统,当前数据库性能监控,通常监视以下几点: (1) 是否有阻塞 (Blocking); (2) 是否有等待 (Waiting),阻塞就是锁 (Lock) 等待; (3) 是否运行时间过长(Long running): (4) 是否有死锁 (Deadlock): sys.dm_exec_query_stats之类,等一些统计性的信息,通常不作为实时告警内容,而是在性能优化时,作为参考. 一. 阻塞/等待/长时间运行 1. SQL Server 2005 及以后版本检查 SELECT

架构设计:系统存储(9)——MySQL数据库性能优化(5)

=================================== (接上文<架构设计:系统存储(9)--MySQL数据库性能优化(5)>) 4-3-3-3.避免死锁的建议 上一篇文章我们主要介绍了MySQL数据库中锁的基本原理.工作过程和产生死锁的原因.通过上一篇文章的介绍,可以确定我们需要业务系统中尽可能避免死锁的出现.这里为各位读者介绍一些在InnoDB引擎使用过程中减少死锁的建议. 正确使用读操作语句 经过之前文章介绍,我们知道一般的快照读是不会给数据表任何锁的.那么这些快照读操作

Sysbench0.5测试数据库性能

一.sysbench介绍SysBench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.它主要包括以下几种方式的测试:1.cpu性能2.磁盘io性能3.调度程序性能4.内存分配及传输速度5.POSIX线程性能6.数据库性能(OLTP基准测试 目前sysbench主要支持MySQL,pgsql,Oracle等数据库.最早的官网 http://sysbench.sourceforge.net      已经不可用项目地址: https://launch