企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 1、数据库优化的目的 **避免出现页面访问错误** * 由于数据库连接timeout产生页面5XX错误 * 由于慢查询造成页面无法加载 * 由于阻塞造成数据无法提交 **增加数据库稳定性** * 很多数据库问题都是由于低效的查询引起的 **优化用户体验** * 流畅页面的访问速度 * 良好的网站功能体验 ## 2、可以从几个方面进行数据库优化 ![](/assets/TIM图片20171222211122.png) 在这个金字塔结构中`SQL及索引`优化占最大的面积而且同时也是金字塔的基础,对于优化来说,`SQL及索引`优化是最重要的。 **SQL及索引** `在这一步需要做什么那?` * 根据需求写出一个结构良好的SQL * 根据这个SQL在表中建立一些**有效**的索引. * 索引太多,不但影响写入时的效率,对于查询时的效率也是会有影响的。 * 索引一定要适量,一定要有效。 **数据库表结构** * 如果表结构设计的不合理,就很难写出一个结构良好的SQL,也很难对SQL进行优化。所以SQL及索引的优化是表结构的设计。 * 要根据数据库范式的要求来进行简洁明了的设计,尽量减少冗余。 * 要思考怎么样的表结构有利于SQL的查询 **系统配置** * 系统本身也有一些限制如: * TCP/IP连接数的限制 * 打开文件数的限制,最重要的。MYSQL是基于文件的,每查询一些表都要打开一些文件,如果文件数达到了一定限制,这个文件就无法打开,就会进行频繁的I/O操作。 * 安全性的限制 **硬件优化** * 更适合数据库的CPU * CPU越多并不一定会对数据库有更好的影响,MySQL会对CPU核数有一个限制,并不会用到太多的核数,有的查询只能用到单核。 * 更快的I/O * 并不能减少数据库锁的机制,因为锁是数据库内部保持数据完整性的机制,所以说I/O很快,并不能减少数据库的阻塞。 * 更多的内存 * 数据库的数据是先装在内存中,然后在进行查询修改的。内存越大对数据库的性能就越好。 如果SQL和索引没有优化好,数据库查询产生慢查询或者产生大量阻塞,这种情况是由于MySQL内部的一些锁机制造成的,所以再好的硬件也是没有办法对这些进行优化。一旦慢查询很多阻塞很多,那么并发量就会上去。并发量上去,再好的硬件\*\*也会很高,造成应用响应缓慢。