数据库是现在做为大多数应用存储数据的工具,所以掌握数据库相关知识是必备的。为了使应用系统更加稳定,需要进行sql进行优化。可以避免大数据情况下数据库连接出现timeout的错误,以及慢查询导致的无法加载或者是由于阻塞造成的数据无法提交(由于服务器内部锁的原因,当我们在大批量的更新某个字段的时候可能在这个字段产生阻塞)。很多数据库问题都是由于低效率的慢查询引起的。
1:SQL及索引:根据业务需求写出结构良好的SQL,并建立有效的索引(索引要适量,太多会导致写入的效率,对查询也会有影响),而对于一种查询可能有多种sql实现方式,要选择结构最优的方式。如果表结构不合理,就很难写出结构良好的sql,就很难对sql进行优化。尽量根据范式进行数据库表结构的设计,尽量减少冗余
2:系统配置:当前mysql大多数是运行在linux系统之上,但是系统有一些本身的限制,比如TCP/IP连接数的限制,打开文件数的限制,以及一些安全性的限制,所以要对系统的一些配置进行优化,最主要的就是打开文件数,因为mysql数据库是基于文件的,没查询一个表都要打开一个文件,如果打开文件数达到一定的限制呢,就会导致无法打开,就会进行频繁的IO操作
3:硬件:选择最适合数据的CPU,更快的IO,以及更多的内存,数据库的数据都放在内存中进行查询,修改,所以内存越大,对数据库的性能越好。但是CPU越多不一定对数据库造成更好的影响,有些查询只能用到单核,所以并不核数越多越好。最后是IO,当前有很多新型的IO设备,比如SSD,等等,这种io设备对数据库的性能肯定是有一定的影响,但是这种IO设备是无法减少数据库锁的机制,阻塞,所以说硬件是数据库优化成本最高,效果最差的。所以一旦慢查询多,阻塞很多,那么并发量就会上去,并发量一旦上去,硬件就会造成硬件响应缓慢