作者:20乐宝儿_202 | 来源:互联网 | 2023-05-24 11:30
优化核心:就是减少对数据库的连接与操作(因为mysql是数据库的瓶颈,造成高并发);A:架构成层:分布式部署(mysql服务)①主从复制(通过读取主服务器(mysql)的二进制文件
优化核心:
就是减少对数据库的连接与操作(因为mysql是数据库的瓶颈,造成高并发);
A: 架构成层 :分布式部署(mysql服务)
① 主从复制(通过读取主服务器(mysql)的二进制文件,重新在从服务器上执行一次,同步数据);
注释:主从服务器指的是数据库的主服务和从服务
②读写分离(把数据表的增删改和查询分离开来,通过连接不同服务器的数据库,实现读写分离,提高mysql数据库的并发负载能力)
③ 搭建服务器集群 注释:通过nginx负载均衡搭建服务器集群
④ 设置缓存(redis memcache mongoDb)
B:从底层来说
选取合适的数据库引擎(myisam 和 innodb(注意他们的区别)); 选取合适的字段(原则:能用小的不用大的,选取小的空间,选取运行速度快的,能选取定长的不选取变长的);尽量将一些数据转化成整型进行存储,如ip和时间 建立适当的索引,提高查询效率(索引:类似查询目录,对数据表的一类或者多列进行排序的结构,该结构支持一定的算法,可以快速的查询数据,分为主键、唯一索引、普通索引、全文索引。); 注意: ①索引使用的场景
where 条件里面涉及到的字段、order条件里面涉及到的字段。字段的值足够多样化,尽量不要重复(比如性别就不能建立索引); 索引的使用原则:用explain查询计划 a. 左原则 : like查询的时候,左边尽量不能使用%; b. or原则 :使用or的时候,两边的字段必须是索引字段,才能使用索引,否则失效; c.复合索引的时候,必须使用复合索引的第一个索引字段才有效 key(name,password); d.如果mysql估计全表扫描比使用索引查询效率高时,就不要使用索引;
②myisam和innodb的区别:
事务:myisam不支持事务,innodb支持事务 myisam支持压缩机制 存储文件: myisam存储文件分为:结构文件,数据文件,索引文件;innodb存储文件:结构文件、数据/索引文件; 并发性: myisam并发性较差,因为myisam使用的是表锁机制,当对表操作的时候,会将整个表锁住,但是读写速度快;Innodb并发性好,因为采用的是行锁机制,当操作数据时,智慧锁住当前的某一条记录,但是读写速度相对慢; Myisam不会根据主键大小进行排序,Innodb会根据主键的大小进行排序 C: sql 语句层
开启mysql的查询缓存 将上次查询的结构缓存下来,以便下次从新使用; 原则:字段不参与运算,数据库发生改改变(包括结构和数据的改变),查询语句里面含有变化的条件,查询语句大小写也会生成不停的缓存; 开启慢查询日志 D:设计层
如果数据足够大,可以考虑物理谁给你的分表和虚拟化分区; 分区是两者之中比较好的方法,通过range、list、hash、key分区,把一张表分成多个区域,提高查询效率,但实际上还是一张表;