对于互联网开发都少不了和数据库接触,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的or、in、union与索引优化 在数据库查询优化中,索引的使用至关重要,它能显著提升查询速度。本文将基于一个具体的业务场景来探讨在MySQL中使用`union all`、`in`、`or`以及负向查询(如`!=`)时如何有效...
### MySQL的索引优化 #### 一、索引的基本概念 索引是在数据库表中用于提高数据检索效率的重要工具。简单来说,索引就像是图书的目录页,可以帮助用户快速定位到所需的信息,而无需逐页查找。对于MySQL而言,所有...
关于mysql查询优化的讲解,简单明了!
MySQL因其简单、高效、可靠的特点,在IT行业中迅速崭露头角,成为最受欢迎的开源数据库之一。由于其强大的功能和灵活性,MySQL不仅在Web项目中得到广泛应用,还在网络游戏领域及众多大型企业的核心业务中扮演着关键...
### MySQL数据库性能优化 #### 一、概览 在当今高度依赖互联网技术的世界里,数据库作为数据存储的核心组件,其性能直接影响着应用系统的响应速度和用户体验。MySQL作为一款广泛使用的开源关系型数据库管理系统,...
MySQL优化是数据库性能调优中的一项重要工作,它对于提高大型或中型项目的性能至关重要。在用户量增长、业务扩展的背景下,一个运行缓慢的数据库会严重影响用户体验和业务效率。因此,掌握MySQL优化技术,特别是针对...
MySQL 优化是一个涵盖广泛的主题,涉及数据库架构设计、SQL 查询优化、索引策略以及系统配置等多个方面。在本文中,我们将重点关注两个关键的工具:MySQL 的慢查询日志(Slow Query Log)及其分析工具 `...
性能优化的“Easy Wins”是针对性能进行快速提升的简单有效手段。 接着,书中提出了MySQL Connector/J的一些配置选项。Connector/J是MySQL的Java数据库连接器,提供了许多参数来优化数据库连接池的性能。例如,通过...