MySql性能优化
use exercise_linux;
-- 优化其他Sql语句
-- insert优化
-- 1.批量插入
-- 在insert插入时,尽量批量插入,因为每次插入都需要和数据库建立连接,十分影响效率
-- 但插入多条数据也不建议过多,一般为500 - 1000;若有大量数据需要插入,那么应该将其拆分为一堆少量的数据再插入
-- 2.手动提交事务
-- 若自动提交事务,则会面临频繁的事务开启和事务提交,影响效率;可以等一些Sql语句执行完毕之后,再一次性提交事务
-- 3.主键顺序插入
-- 主键顺序插入的效率高于主键乱序插入的效率
-- 4.大批量插入数据
-- 若需要一次性插入大批量数据,使用insert语句插入效率较低,可以使用load指令插入
-- 步骤:
-- 1.在客户端链接服务端时,加上参数 --local-infile
-- mysql --local-infile -u root -p
-- 2.开启从本地加载文件导入数据库的开关
-- set global local_infile = 1
-- 3.执行load指令将准备好的数据加载到表结构中
-- load data local infile 'file_name' into tbale 'table_name' fields terminated by '分割符' lines terminated by '换行符'
-- 数据组织方式
-- 在innoDB存储引擎中,表数据都是根据主键顺序存放的,这种存储方式的表是索引组织表
-- 页合并:
-- 当删除一行记录时,实际上记录并没有被物理删除,只是该记录被标记为删除;而且它的空间变得允许被其他记录声明使用
-- 当页中删除的记录达到MERGE_THRESHOLD(默认为页的50%),innoDB引擎会开始寻找最靠近的页(前或后)看看是否可以将两个页合并,以优化空间使用
-- 主键的设计原则
-- 满足业务需求的情况下,尽量降低主键的长度
-- 插入数据时,尽量选择顺序插入,选择AUTO_INCREMENT自增主键
-- 尽量避免以UUID做主键或其他自然主键,如身份证号
-- 业务操作时,避免对主键修改,因为修改主键要修改索引结构,代价极大