UDN-企业互联网技术人气社区

板块导航

浏览  : 1185
回复  : 0

[资源分享] 前端开发程序之MySQL注意事项

[复制链接]
白青青的头像 楼主
发表于 2016-7-4 14:15:10 | 显示全部楼层 |阅读模式
  随着云服务的迅速发展,很多公司逐步开始将业务上云,对于开发人员来说,将需要做很大的改变,需要从原来的Oracle、DB2等数据库转型到MySQL数据库上来。

  那么MySQL程序开发的时候有哪些注意事项呢?

  1、 资源限制

  资源方面,MySQL每个查询只能用到1个CORE,并且不同版本对CPU资源有不同的限制(如:5.6版本最多使用48个CORE)。

  2、 磁盘 IO

  对于磁盘IO方面,我们应根据数据文件的类型来分配磁盘的使用,对于IO类型有顺序IO和随机IO两种,顺序IO类似binLog、redolog、undolog之类,对于数据库表文件的访问基本上都属于随机IO类型,所以我们应该把数据文件应该放在IO性能更好的磁盘,还有,在我们设计的时候,尽量多考虑数据库聚簇索引的内部排序特性,使其访问时顺序IO和随机IO的相结合。

  3、 结果缓存

  MySQL提供的结果缓存功能,与Oracle、DB2数据库的缓存相比,性能悬殊较大,对于OLTP系统,数据变更较大的,建议关闭。

  4、 性能问题

  MySQL随着连接数上升会出现性能会下降,所以不是连接数越多越好,适可而止,不过我们可以通过一些官方的收费组件TP来优化此问题。

  5、 存储引擎选择

  目前MySQL支持的存储引擎有MyASAM、InnoDB、MEMORY、MRG_MyASM等等,需要根据实际业务情况来选择存储引擎,具体比较如下表:
2.png

  6、 子查询

  有关子查询方面,MySQL支持子查询,但性能较差,对于低版本的MySQL,建议不用子查询。

  7、 数据存储

  数据存储方面,建议考虑分库分表,也对单表进行分区,MySQL的分区功能没有像Oracle那样完善,局限性比较多,具体如下表:
2.png

  分区的特性:

  • 可以存储更多的数据
  • 提高查询效率
  • 便于进行历史数据的管理
  • 获得更高的吞吐量
  • 并不是所有存储引擎支持分区,如:MERGE
  • 在同一张表上,不能对分区使用混合存储引擎:

2.png

  大表一定要拆分,否则会出现性能问题,具体是采用分区还是分表和分库,可以根据实际情况来处理。

  8、 少用复杂SQL语句

  复杂的SQL语句尽量少用,复杂的SQL一般会出现性能问题。

  9、检查每一句SQL执行计划

  对于每一个SQL语句,都要检查SQL的执行计划,方法如下:
2.png

  type的说明如下表:
2.png

  10、谨慎考虑SQL语句

  还有一个需要注意,MySQL的一个SQL只使用一个索引,这与其它数据库类似,在建立索引的时候需要充分考虑,尽量建索引在重复性低的字段上,能建唯一索引或主键的一律建唯一索引或主键。

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部