当前位置: > 数据库 > MySQL >

MySQL程序开发注意事项

时间:2016-05-29 12:08来源:linux.it.net.cn 作者:IT

随着云服务的迅速发展,很多公司逐步开始将业务上云,对于开发人员来说,将需要做很大的改变,需要从原来的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等等,需要根据实际业务情况来选择存储引擎,具体比较如下表:

6、 子查询

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

7、 数据存储

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

分区的特性:

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

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

8、 少用复杂SQL语句

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

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

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

type的说明如下表:

10、谨慎考虑SQL语句

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



(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容