随着云服务的迅速发展,很多公司逐步开始将业务上云,对于开发人员来说,将需要做很大的改变,需要从原来的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那样完善,局限性比较多,具体如下表:
分区的特性:
大表一定要拆分,否则会出现性能问题,具体是采用分区还是分表和分库,可以根据实际情况来处理。
8、 少用复杂SQL语句
复杂的SQL语句尽量少用,复杂的SQL一般会出现性能问题。
9、检查每一句SQL执行计划
对于每一个SQL语句,都要检查SQL的执行计划,方法如下:
type的说明如下表:
10、谨慎考虑SQL语句
还有一个需要注意,MySQL的一个SQL只使用一个索引,这与其它数据库类似,在建立索引的时候需要充分考虑,尽量建索引在重复性低的字段上,能建唯一索引或主键的一律建唯一索引或主键。