mysql数据库怎么优化

分库分表设计当数据量级达到亿级以上时,可以将一个数据库分拆成多份,并放到不同的数据库服务器上,从而减少对单一数据库服务器的访问压力。
进行垂直/水平分库分表的分拆行为,在提升数据库性能的同时,也增加了维护和使用成本。 垂直分库分表的情况:- 当数据库中的数据表过多时,可以垂直分库;建议将相互关联的数据表,部署在一个数据库上。- 当数据表中的列过多,可以垂直分表;建议将该数据表拆分成多张表,并将经常一同使用的列放到同一张表里。 水平分库分表的情况:当数据表中的数据量级达到亿级以上时,可以考虑水平切分;将大的数据表分拆成不同的子表,每张表保持相同的表结构。例如,可以按时间将数据放到不同的数据表中。

实现读写分离针对数据库读多写少的业务场景,您可以通过部署一个或多个只读实例,弹性扩展数据库的读能力。主实例负责写请求,只读实例负责读请求。通过添加只读实例的方式,既可以满足业务大量的读请求,同时也能分担数据库的压力。

数据库设计规范
1. 建议将同一类业务的表放同一个库中,不同业务的表放到不同的库。
2. 建议创建数据库时显示指定字符集,且字符集统一使用utf8或者utf8mb4编码,可以降低乱码风险。对于部分复杂汉字和表情必须使用utf8mb4方可正常显示。
3. 建议合理设计库的命名。数据库命名,可以考虑以“业务系统名称_子系统名”来命名。临时库可以采用tmp_为前缀,并以日期为后缀。
4. 避免在程序中执行跨库的关联操作,因为该操作会影响后续的快速回档。
5. 避免数据库中使用 text/blob 来存储大段文本、二进制数据、图片、文件等内容。因为频繁读写会降低数据库I/O性能,造成数据页空洞而浪费硬盘空间。如果一定要使用建议将TEXT/BLOB拆分到扩展表。
6. 禁止将业务逻辑封装在数据库procedure/function/trigger中。业务逻辑用程序实现,数据库中仅仅允许使用没有任何业务逻辑相关的存储代码。
7. 建议在数据库设计时,充分考虑后期数据库扩展问题。