使用Mysql替代oracle之前:
1、主键:表必须要有主键,最还是自增主键,一定是innodb引擎
2、加字段:由于MySql 5.5还不支持online ddl(加字段锁表),因此要控制单表数据量以减少DDL时间(建议数据量不要超过千万)
3、冗余:应平衡范式和冗余,是当地在表中冗余字段(比如userid、name之类),可以减少关联查询。
4、存储过程:数据库扩容太难(涉及数据重新分布),尽量不在数据库做复杂运算,比如存储过程、函数、触发器。
5、大事务:在查询或事务处理上,应尽量化复杂为简单,复杂SQL应拆分为多步骤实现,拒绝大事务(比如一条SQL更新了几百万条记录)
6、数据导入:批量数据导入应尽量使用LoadData,或是批量插入,而不是单挑导入数据。
7、Join查询:由于MySql执行计划只支持Nest Loop,尽量减少超过3个表以上的关联查询。
8、子查询:MySQL 5.5版本及以下禁用子查询(In、Exists)。
9、专业度:建议有专业DBA参与,包括数据库架构设计、SQL查询和索引创建等。
10、MySQL 执行计划仅支持NestLoop嵌套查询,对多表关联Join查询的支持非常弱,对大数据大的处理弱。
11、存储过程、函数功能支持弱,大部分Oracle语法都不兼容
12、考虑到扩展性,数据量大的或对性能有要求的应尽量使用MySQL分库分表,建议使用DRDS。
13、MySQL的使用和运维门槛极高(因为存在MySQLbug、问题debug、特殊SQL优化等),使用RDS是个很好的选择。阿里云上有超过100w公用云用户在使用RDS,稳定性和安全都有极大保障。
MySql开发规范
最新推荐文章于 2024-05-28 10:06:31 发布