栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习记录分享

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习记录分享

第40天打卡:

SQL优化:

insert优化:

插入数据建议使用批量插入;

建议手动提交事务,避免频繁的开启及提交事务(mysql默认自动提交);

建议按照主键顺序插入,性能高于乱序插入。

当数据量过大(500W、1000W条数据)建议使用load data local infile加载本地文件到数据库表中,文件内的数据要按一定格式存放。

主键优化:

建议主键长度尽量短,使用auto_increment顺序插入,避免使用UUID,当乱序插入时容易发生页分裂。

说到页分裂和页合并,需要先了解InnoDB引擎的逻辑存储结构:表中间中存储段,段中存储区,一个区的大小是1MB,区中存储页,一个页的大小是16KB,所以一个区中可以存储64个页,页中存储行,行中存储的是具体的字段值。

页分裂:(例图来自B站黑马中的视频截图)

当主键乱序插入时,因为B+数的叶子节点是有序的,所以50应该插到47后面。

50并不是直接插入,而是需要开辟一个新的页,根据页内50%开始分割。

将23 47 50放入到新的页中

然后重新设置链表指针

这种现象称为页分裂,与页分裂对应的概念为页合并。

页合并:(例图来自B站黑马中的视频截图)

当删除一行记录时,并不会真的删除只是会给行添加一个标记,并且它的空间允许被其他记录声明并占用。

当页中删除的记录达到一个阈值(默认为50%),InnoDB会开始寻找前或后是否可以将两个页合并以优化空间使用。

此时如果再插入数据就会直接插入到空闲出来的页中。

 

这个现象称为页合并。

order by优化:

主要通过索引进行操作,尽量使用覆盖索引,涉及到的字段尽量建立索引。

Group by优化:

通过索引,多字段分组时遵循最左前缀法则;

limit优化:

覆盖索引+子查询

count优化:

count(*)的查询效率最高,性能与count(1)相似,建议使用

Update优化:

更新数据时根据索引字段更新,更新有索引的字段会自动加行锁,更新没有索引的字段会自动加表锁,整张表锁住会降低数据库的并发性能。

SpringBoot互联网金融项目——盈利宝:

项目开工第一天:

根据服务调用图来搭建环境(Dubbo分布式项目):

1.创建父项目,是普通Maven项目,在里面添加依赖、版本、插件等;

2.创建api项目继承父项目,定义实体类接口等,目前只有实体类;

3.创建common项目继承父项目,存放工具类、常量、公共资源等,目前为空;

4.创建dataservice SpringBoot项目,此项目用来完成和数据库数据的交互,有mapper和xml映射文件。在pom文件中声明引用父项目中的依赖。

注:以上三个项目继承父项目,父项目会自动聚合。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号