商务服务
Java面试题系列——JavaSE面试题(MySQL二)
2024-11-19 03:05

整体策略:通过多线程分批次对大量数据进行插入操作实现高效插入。

Java面试题系列——JavaSE面试题(MySQL二)

1.比如数据量为10w,将10w条数据分为10个1w条,然后通过创建多(10)个线程,对这10个1w数据进行插入操作。

2.通过遍历数据去进行插入操作实际上就是一条一条的插入,每执行一次insert就要向数据库传一条sql,数据库编译sql,然后执行,这里用的是Statement。这样做插入效率明显很低,所以我们需要采用批量插入大方式去进行,这里需要用到PreparedStatement。两者的区别在文章末。  

 

3.由上例可以看出每10000条数据进行一次事务的提交,也就是说事务的粗粒度太大,数据库每次面临一万条数据的插入,压力也会很大,所以我们可以再将上述案例进行优化,每一百条数据进行一次事务的提交。

4.最后如果想要查看数据库中已经插入的数据条数,通过执行sql语句效率也会比较低,可以通过在内存中设置一个n,来记录插入数据条数,当然,在多线程的情况下,需要对n进行加锁操作。Statement和PreparedStatement的区别

statement是每次执行都会向数据库发送sql,然后数据库进行预编译然后执行。

PreparedStatement是通过AddBatch()将多次执行操作都放在一起,然后再向数据库发送sql,然后数据库编译执行。

联合索引:就是创建一个索引,索引中包含多个列。

普通索引:即单个索引,一个索引包含一个列。

区别

联合索引中列的顺序非常重要,从左原则。a,ab,ba,abc。一般来说,列表搜索需要多个列查询,此时就可以使用联合索引,都是and的关系。 单个索引:一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。

将远程数据库里面的数据导出为 sql 到本地,导入本地数据库后进行操作,但这一过程也很缓慢,一个百万级数据库在 navicat 里面可能要导个半个小时。

基本思路是复制原表 A 结构新建一个表 B,对表 B 添加 UNIQUE 约束,然后将表 A 中的数据逐条插入表 B,约束会自动实现去重。

1.复制表结构

 

2.为表格添加约束条件

 

3.为新表中添加数据(约束条件自动去重)

 
 

 
 

1.左外连接

 

2.右外连接

 
 
 
 
 

其实这个就是二分查找的一种思想,也叫折半查找,每一次,我们都把候选数据缩小了一半。如果数据已经排过序的话,这种方式效率比较高。

所以第一个,我们可以考虑用有序数组作为索引的数据结构。有序数组的等值查询和比较查询效率非常高,但是更新数据的时候会出现一个问题,可能要挪动大量的数据(改变index,所以只适合存储静态的数据。

为了支持频繁的修改,比如插入数据,我们需要采用链表。链表的话,如果是单链表,它的查找效率还是不够高。所以,有没有可以使用二分查找的链表呢?为了解决这个问题,BST(Binary SearchTree)也就是我们所说的二叉查找树诞生了。

二叉查找树的特点是什么?左子树所有的节点都小于父节点,右子树所有的节点都大于父节点。投影到平面以后,就是一个有序的线性表。

二叉查找树既能够实现快速查找,又能够实现快速插入。但是二叉查找树有一个问题:就是它的查找耗时是和这棵树的深度相关的,在最坏的情况下时间复杂度会退化成O(n)。比如,我们插入的数据刚好是有序的,比如 [2、6、11、13、17、22] 这个时候我们的二叉查找树变成了什么样了呢

它会变成链表(我们把这种树叫做“斜树”,这种情况下不能达到加快检索速度的目的,和顺序查找效率是没有区别的。为了解决这一问题,人们发明了平衡二叉树,叫做Balanced binary search trees,或者AVL树(AVL 是发明这个数据结构的人的名字)。

人们在二叉搜索树的基础上增加了约束,具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

B树的英文是Balance Tree,也就是多路平衡查找树。简写为B-Tree。它的高度远小于平衡二叉树的高度。

Java面试题系列——JavaSE面试题(MySQL二)

B树作为多路平衡查找树,它的每一个节点最多可以包括M个子节点,M称为B树的阶。每个磁盘块中包括了关键字和子节点的指针。如果一个磁盘块中包括了x个关键字,那么指针数就是x+1。对于一个100阶的B树来说,如果有3层的话最多可以存储约100万的索引数据。对于大量的索引数据来说,采用B树的结构是非常适合的,因为树的高度要远小于二叉树的高度。

你能看出来在B树的搜索过程中,我们比较的次数并不少,但如果把数据读取出来然后在内存中进行比较,这个时间就是可以忽略不计的。而读取磁盘块本身需要进行I/o操作,消耗的时间比在内存中进行比较所需要的时间要多,是数据查找用时的重要因素。B树相比于平衡二叉树来说磁盘Ⅰ/0О操作要少,在数据查询中比平衡二叉树效率要高。所以只要树的高度足够低,IO次数足够少,就可以提高查询性能。  

 B Tree 的效率已经很高了,为什么 MySQL 还要对 B Tree 进行改良,最终使用了B+Tree呢?总体上来说,这个B树的改良版本解决的问题比B Tree更全面。我们来看一下InnoDB里面的B+树的存储结构

Java面试题系列——JavaSE面试题(MySQL二)

MySQL中的B+Tree有几个特点

  1. 它的关键字的数量是跟路数相等的

  2. B+Tree 的根节点和枝节点中都不会存储数据,只有叶子节点才存储数据。搜索到关键字不会直接返回,会到最后一层的叶子节点。

  3. B+Tree的每个叶子节点增加了一个指向相邻叶子节点的指针,它的最后一个数据会指向下一个叶子节点的第一个数据,形成了一个有序链表的结构。

  4. 它是根据左闭右开的区间 [ )来检索数据

持续更新中,敬请期待

参考文章

【Mysql】大批量(百万级)数据插入数据库应该怎么做(提高效率)?_小树ぅ的博客-CSDN博客_mysql高效导入大批量数据

 MySQL 的一次百万级数据快速去重经验分享_业余草的博客-CSDN博客

MySQL索引对NULL值的处理-蒲公英云

mysql索引的数据结构及原理_程涯的博客-CSDN博客_mysql索引的数据结构

mysql的索引是什么数据结构_mysql索引的数据结构是什么_婷.zhu的博客-CSDN博客

mysql索引的数据结构_small_engineer的博客-CSDN博客_mysql索引数据结构

    以上就是本篇文章【Java面试题系列——JavaSE面试题(MySQL二)】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/news/782.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多   
最新文章
扎堆儿上新大戏,北京舞台春光正好
春光正浓,北京舞台上生机盎然。近期,多部新戏正在紧张排练,很快将与观众相见。从经典到新作,从本土向世界,这批新戏横跨戏剧
险资最新重仓股名单出炉,钟爱银行和通信,加仓港股热情正浓
上市公司2024年年报基本披露完毕,险资持股路线图也逐步清晰。保险资金这个头顶“长期资金”“耐心资本”光环的市场主体,由于险
指划修图P图手机p图「指划修图P图」
《指划修图p图手机版》是一款智能美图修图软件,操作简单,容易上手,一键将您的照片进行自动修图,提亮肤色,改善颜值,做出各
股票ETF两日“吸金”1670亿,护盘见效市场企稳资金流入这些赛道
三大指数连续两日收涨,成交额连续放量,随着市场情绪修复,资金流入的方向,在4月9日开始出现变化。 公开数据显示,股票型ETF市
开荒建造类游戏手机版大全 2024可玩性高的生存手游推荐生存游戏手机版「开荒建造类游戏手机版大全 2024可玩性高的生存手游推荐」
本篇将送上几款开荒建造类游戏手机版。在各种艰苦环境下开荒建造来完成生存,是种很能令人们得到满足感的游戏类型。它们可让玩家
地狱边境手机版地狱边境手机版下载「地狱边境手机版」
地狱边境手机版是一款以黑白画风为主的冒险解谜题材游戏,英文叫作:LIMBO,该游戏由Playdead Studios开发,并由PC端移植而来,
应用商店最新排名:360手机助手连续两年领跑360手机应用商店「应用商店最新排名:360手机助手连续两年领跑」
日前,在2016全球大数据峰会GBDC2016上,全国手机媒体委员会秘书长吴红晓向业界解读了《中国移动互联网发展指数2016数据报告》。
晓鸣股份:股票交易异常波动
金融界4月7日消息,发布异动公告,公司股票交易价格于 2025 年 4 月 7 日连续 1 个交易日收盘价格涨幅偏离值累计达到 34.92%(超
广州最被低估的美食高地,是——
每年我们写广州美食榜单,有一个鲜为人知的低调片区,年年都能在竞争最激烈的正餐圈占据一席之地。就是我们心中认为广州美食最卧
已设置的指纹解锁怎样解除_手机里这3个设置是时候用起来了,能够保护你的个人隐私...手机里的秘密「已设置的指纹解锁怎样解除_手机里这3个设置是时候用起来了,能够保护你的个人隐私...」
适用于全系列YOLO算法的危险驾驶行为(打哈欠、抽烟、打电话)数据集6499张+yolo格式标签(可数据增强)【数据集说明】1、数据集