设为首页 收藏本站
查看: 692|回复: 0

[经验分享] mysql简单优化

[复制链接]

尚未签到

发表于 2016-9-11 10:18:29 | 显示全部楼层 |阅读模式
  对于互联网开发都少不了和数据库接触,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.iyunv.com/art/201006/205790.htm 优化后感觉好多了。过了一些时间了,同样的问题一样出现了,由于这段时间的注册用户越来越大,数据量也越来越大,一个表里面都是以千万级的了,怎么办?
  
  5.分库分表,怎么分库分表,这个网上有许多案例,我就不详细介绍了,有一天,客服MM打电话过来说用户反馈网站打不开了,登录到后台一看,原来数据库的那个磁盘坏了,这么大的事只能贴个网站维护了,去修磁盘了,公司老板开会说这次故障影响太大,你们的kpi已经没了,多么痛苦的消息啊!下次坚决不能再出现这个问题了,搞个主备吧!搬了一台机子,搞了个实时同步(实际上做不到实时同步了,有时间延迟),当master出问题,可以把备份的机器当master去用,可磁盘也不是那么容易损坏的了,这样是不是备份的那台机器太浪费了,想了想,两台机器可以搞个读写分离.......
  
  
  时间过的真快.....下次继续吧!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-270679-1-1.html 上篇帖子: mysql 设置外键 下篇帖子: Mysql Dump命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表