对于互联网开发都少不了和数据库接触,sql server,mysql,oracle,这是几个主流的数据库了,其中mysql又是这里面的主流(除了一些核心数据需要oracle的支持),所以我接触最多的数据就是mysql。
我不是dba,我只是一个小小的rd,所以以我现在的了解的去简单介绍下怎么优化mysql的io,互联网开发的RD几乎都知道一个网站流量大了,其中最大的瓶颈大部分都是在IO上,其中数据库涉及到的IO又是最平凡的。
在这里我们就认为整个系统的瓶颈在mysql上,接下来我们准备怎么优化?
1.选择正确的引擎,建表的时候特别要注意需要合适的数据库引擎(ISAM,MyISAM,HEAP,InnoDB),对于RD接触最多的就是myisam和innodb这两个引擎。
myisam:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。
innodb:InnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MYSQL++ API。在使用MYSQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理(transaction process)也不支持外来键。尽管要比ISAM和 MyISAM引擎慢很多,但是InnoDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者 或者两者,那你就要被迫使用后两个引擎中的一个了。
对于选择什么样的引擎请看:http://www.cnblogs.com/sopc-mc/archive/2011/11/01/2232212.html
2.选择正确是字段类型,这对我们以后的索引和数据量很大的时候都有好处,比如:日期2013-04-28我们可以用long类型也可以用String类型,当有100w数据量的时候,使用long类型的需要磁盘的大小为8字节*1000000=8000000byte,使用String则可以认为是10个char,需要的磁盘大小为:2字节*10*1000000=20000000byte,如果加上年月日那相差更大。
3.创建表的时候,注意业务的需要,劲量少连表查询,那设计表的结构的时候可以有冗余,数据量比较大的时候连表查询很影响性能。
现在我们就可以用刚才创建的表了,增删改查.....while(增删改查),突然有一天mysql堵了很多链接不释放,打开慢日志查询,发现了很多的sql都很慢,怎么办呢!sql优化不是一时半会能优化好的了,还容易出错,有什么办法呢?
4.添加索引,索引对于数据库优化可以说是万金油了,但对于添加索引,我们也要注意很多地方,哪里加了索引带来了很大的速度提升,哪里加了反而影响了性能,对于怎么添加索引,异步到:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html
现在好了,终于缓过来了,网站又刷刷的了,又过了一段时间,网站的列表页打开又很慢了啊,看看数据库中的表的记录也不是太多啊,那看看sql能不能优化,http://database.51cto.com/art/201006/205790.htm 优化后感觉好多了。过了一些时间了,同样的问题一样出现了,由于这段时间的注册用户越来越大,数据量也越来越大,一个表里面都是以千万级的了,怎么办?
5.分库分表,怎么分库分表,这个网上有许多案例,我就不详细介绍了,有一天,客服MM打电话过来说用户反馈网站打不开了,登录到后台一看,原来数据库的那个磁盘坏了,这么大的事只能贴个网站维护了,去修磁盘了,公司老板开会说这次故障影响太大,你们的kpi已经没了,多么痛苦的消息啊!下次坚决不能再出现这个问题了,搞个主备吧!搬了一台机子,搞了个实时同步(实际上做不到实时同步了,有时间延迟),当master出问题,可以把备份的机器当master去用,可磁盘也不是那么容易损坏的了,这样是不是备份的那台机器太浪费了,想了想,两台机器可以搞个读写分离.......
时间过的真快.....下次继续吧!
相关推荐
MySQL架构执行与SQL性能优化-MySQL高并发详解课程,课程的目标简单明确,核心就是MySQL的性能优化与高并发。课程内容进行了精华的浓缩,有四大内容主旨,MySQL架构与执行流程,MySQL索引原理详解,MySQL事务原理与...
### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...
简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...
### MySQL性能优化详解 #### 一、什么是MySQL优化? MySQL优化是指通过合理安排资源和调整系统参数,使得MySQL运行得更快、更节省资源的过程。优化的目的在于减少系统瓶颈,降低资源消耗,提升系统的响应速度。 #...
MySQL 性能优化总结 MySQL 性能优化是数据库管理和开发人员需要掌握的重要技能。性能优化的目标是让查询更快,减少查询所消耗的时间。为了达到这个目标,我们需要从每一个环节入手,包括连接、配置优化、索引优化、...
### MySQL性能优化集合 #### 一、MySQL优化概述 MySQL作为一种广泛使用的开源关系型数据库管理系统,在数据处理方面表现优秀。然而,在高并发、大数据量的情况下,可能会遇到性能瓶颈。因此,进行MySQL性能优化是...
MySQL 性能优化是提升数据库效率的关键步骤,其目的是通过合理分配资源、调整系统参数,使得MySQL运行更快、更节省资源。优化不仅涉及查询优化,还包括更新优化和服务器优化等多个层面。优化原则在于减少系统瓶颈,...
### MySQL数据库优化全面解析 #### 一、查询优化概述 查询优化是提升MySQL数据库性能的关键环节之一。在数据库系统中,查询操作是最常见的用户交互形式。一个查询从客户端发起,到达数据库服务器,经过处理后返回...
### MySQL的or、in、union与索引优化 在数据库查询优化中,索引的使用至关重要,它能显著提升查询速度。本文将基于一个具体的业务场景来探讨在MySQL中使用`union all`、`in`、`or`以及负向查询(如`!=`)时如何有效...
### MySQL的索引优化 #### 一、索引的基本概念 索引是在数据库表中用于提高数据检索效率的重要工具。简单来说,索引就像是图书的目录页,可以帮助用户快速定位到所需的信息,而无需逐页查找。对于MySQL而言,所有...
关于mysql查询优化的讲解,简单明了!
MySQL因其简单、高效、可靠的特点,在IT行业中迅速崭露头角,成为最受欢迎的开源数据库之一。由于其强大的功能和灵活性,MySQL不仅在Web项目中得到广泛应用,还在网络游戏领域及众多大型企业的核心业务中扮演着关键...
### MySQL数据库性能优化 #### 一、概览 在当今高度依赖互联网技术的世界里,数据库作为数据存储的核心组件,其性能直接影响着应用系统的响应速度和用户体验。MySQL作为一款广泛使用的开源关系型数据库管理系统,...
【MySQL5优化实践文档】 1. 概述 在数据库管理中,MySQL5是一个广泛使用的开源关系型数据库管理系统。随着业务的增长,数据库性能优化成为关键的一环,以确保系统的高效运行。本文档由Xi'an App of Rayhov tech Co...
MySQL优化是数据库性能调优中的一项重要工作,它对于提高大型或中型项目的性能至关重要。在用户量增长、业务扩展的背景下,一个运行缓慢的数据库会严重影响用户体验和业务效率。因此,掌握MySQL优化技术,特别是针对...
MySQL数据库优化经验 MySQL 数据库优化是一个非常重要的方面,作为数据库管理员或开发者,了解如何优化数据库性能对于提高应用程序的速度和效率具有非常重要的意义。本文将从索引的角度来讲解 MySQL 数据库优化的...
逻辑优化阶段涉及SQL语句的解析和重写,将复杂的查询转换为等价但更简单的形式;物理优化阶段则专注于选择最佳的执行策略,包括表的访问顺序、索引的选择以及连接操作的类型等。 #### MySQL Range Optimizer详解 ...