优化设计提高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数据库分散式布局

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

时间: 2024-08-14 00:32:53

优化设计提高sql类数据库的性能的相关文章

[翻译]通过使用正确的search arguments来提高SQL Server数据库的性能

原文地址:http://www.sqlpassion.at/archive/2014/04/08/improving-query-performance-by-using-correct-search-arguments/ Improving Query Performance by using correct Search Arguments April 8, 2014 · Klaus Aschenbrenner · 通过使用正确的search arguments来提高数据库的性能 今天的博客

提高SQL Server数据库效率常用方法

1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有优化 ●可以通过如下方法来优化查询 : 1.把数据.日志.索引放到不同的

影响SQL Server数据库应用性能的几个常见因素

本文转自:http://blogs.msdn.com/b/apgcdsd/archive/2012/01/18/sql-server-2012-1-18.aspx 影响SQL Server数据库应用性能的几个常见因素 性能问题是困扰数据库用户的常见问题之一.经常会有人因为遇到性能问题,质疑SQL Server处理大型数据应用的能力.其实,作为一个在市场上经营了二十多年,出了好几代版本的数据库产品,SQL Server作为一个企业级数据库的能力,是毋庸置疑的.在实际应用中,数据量达到几百GB,甚至

一条sql导致数据库整体性能下降的诊断和解决的全过程

今天早上一来,数据库load就比往常高了许多.想想数据库唯一的变化是昨天早上我曾经重新分析过数据库对象. [@[email protected]] 发现数据库load很高,首先看top发现没有特别异常的进程,在数据库中适时抓取正在运行的sql也没发现异常(通常运行时间非常短的sql是不能被抓取到的).询问相关应用程序人员,最近没有变动.检查应用程序日志发现今天早上跟往常也没有过多登陆和操作.基本上可以圈定是在数据库服务器本身上面. 但是这个时候我还没有办法确定到底是哪个应用的哪个查询的问题,因为

怎样写SQL语句可以提高数据库的性能

1.首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择"索引查找"方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用"全表扫描"方式. 可见,执行计划并不是固定的,它是"个性化的".产生一个正确的"执行计划"有两点很重要: (1)

在程序开发中怎样写SQL语句可以提高数据库的性能

以下内容是公司dba总结. 1. 首先要搞明白什么叫执行计划?   执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择"索引查找"方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用"全表扫描"方式. 可见,执行计划并不是固定的,它是"个性化的".产生一个正确的"执行计划

四项技术 助你提高SQL Server的性能

有时,为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整.但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应.它要么不返回数据,要么耗费的时间长得出奇.如果它降低了企业应用程序的速度,用户必须等待很长时间.用户希望应用程序响应迅速,他们的报告能够在瞬间之内返回分析数据.就我自己而言,如果在Web上冲浪时某个页面要耗费十多秒才能加载,我也会很不耐烦. 为了解决这些问题,重要的是找到问题的根源.那么,从哪里开始呢?根本原因通常

SQL Server数据库性能优化之索引篇【转】

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

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

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