SQL
文章平均质量分 71
Fairy要carry
欲戴其冠,必承其重
展开
-
开源—neo4j的知识图谱
注意:开源作者为十点摆钟在Apache Commons库中,org.apache.commons.lang3.tuple 包中提供Pair抽象类,它有两个子类,分别代表可变与不可变配对:ImmutablePair 和 MutablePair。两者都实现了访问key/value以及setter和getter方法。这种Pair的返回对一个函数返回两个都有意义的值有特别用处。总结:Pair的key是可以一样的,本质上 key 和 value 之间是没有任何区别的;neo4j数据库的驱动3.neo4j执行SQ原创 2022-11-24 10:48:36 · 489 阅读 · 0 评论 -
SpringBoot结合Neo4j
【代码】SpringBoot结合Neo4j。原创 2022-11-23 16:33:08 · 784 阅读 · 0 评论 -
数据库的备份和还原(slqserver)
完整备份还原之后,可以执行差异备份还原。例如在周末晚上执行一次完整数据库备份,以后每隔一天创建一个差异备份集,如果在周三数据库发生了故障,则首先用最近上个周末的完整备份做一个完整备份还原,然后还原周二做的差异备份。原创 2022-11-17 18:02:10 · 1318 阅读 · 0 评论 -
SQL-一些开窗函数使用场景(OVER+lag)
OVER()利用Year进行分组,然后利用Month进行组内排序比如row_number():可以在over函数执行的基础上对Month进行比如在over函数基础上加Rank()函数 ,就是随机那种了Month的话就会重复排序,例子每个部门进行薪水排名——>扩展:取每个部门的第一个或者最后一名查询每个学生的分数最高的前3门课程。原创 2022-11-03 10:33:20 · 3682 阅读 · 0 评论 -
Mysql视图
创建了一个只展示1-10的视图数据,向底层user_info表插入一条数据,在该userView2中是看不到的,所以实际应用中可以在创建或修改视图时。2)实现访问性控制,更加安全(用户只能查询或修改Where限制的数据,所以可以隐蔽真实表中的数据结构)1)简单化,数据所见即所得(比如5张表关联,但是查询只需要每一张表中的1-2个字段,建立视图最合适)如果先建立视图,然后修改对应表中数据,视图是不会改变的。➢union 和 union all 子句;➢distinct 子句;➢having 子句;原创 2022-10-27 13:45:26 · 535 阅读 · 0 评论 -
(补)B+树一些思想
我们索引一般是6bit,主键的话假如是bigint,8bit,然后我们的键和指针的关系是n-n+1的关系(图上很明显),然后我们一个数据页是16kb,1kb=1024bit,所以说——>n*8+(n-1)*6=16*1024。将我们的键计算hash,判断落在我们hash表上哪个Entry上,当然会出现哈希冲突——>利用我们的一个链表来解决我们的哈希冲突,像我们自定义的hash算法h^h>>>16也缓解了我们的哈希冲突。1.根据主键查询效率要高一些,一次查询即可,直接查主键一级索引树。开门见山,我们所有的。原创 2022-09-24 21:36:12 · 523 阅读 · 0 评论 -
间隙锁的理解
(31条消息) MySQL深度解析---可重复读的间隙锁_纯洁2016的博客-CSDN博客_可重复读 间隙锁转载 2022-09-24 20:35:32 · 156 阅读 · 0 评论 -
mysql分布式锁的实现
当批量插入数据时,像我们这个表,lockName设置为唯一索引了——>当重复插入相同数据就会报错。我们这里就是创建一张锁表,通过表中的数据——>实现加锁和解锁,当需要锁住某个资源的时候我们就。Duplicate entry ' ' for key '索引'首先介绍:唯一索引,防止插入重复数据。当插入多条数据,重复数据会直接跳过。死锁的处理和可重入锁的处理。Mysql分布式锁的实现。原创 2022-09-17 20:04:35 · 852 阅读 · 0 评论 -
随笔感悟:Mysql悲观锁和乐观锁
首先是场景:并发控制为了并发情况下,线程跟自己在单机情况一样得到相同的结果,保证数据的一致性;脏读、不可重复读、幻读乐观锁适合并发量比较小的场景(读多写少),悲观锁适合并发量比较大的场景(写多多少);悲观锁在并发时保证线程和单机时结果一样(宏观);当在数据库中修改某条数据时,防止同时被其他人进行修改从而造成数据不一致(微观);有点像警察处理凶杀现场,对凶杀现场(资源对象)进行上锁,防止其他人对其现场进行修改;具有强烈的独占和排他特性。它指的是对。原创 2022-09-12 23:02:22 · 1219 阅读 · 0 评论 -
MVCC在重复读和读已提交场景以及幻读的解决
当第二个事务并没有操作事务操作的那行数据,而是操作其他数据时,按道理来说是被行锁所约束,所以说我们的事务2操作其他数据是不会被阻塞的,但是如果你是事务2用了!已提交和重复读其实都解决了脏读,重复读在此基础上解决了不可重复读的问题——>读已提交:事务1提交了后事务2才能读取事务1操作它更新的内容 ——>重复读:除了事务1要提交,事务2如果要读取最新数据也需要提交,不然读取不到最新数据。可能出现事务2在读取的时候,其他事务出现修改数据并且提交,那么我select的数据就发生了变化。原创 2022-09-10 00:26:43 · 1254 阅读 · 0 评论 -
Mysql面试
不select * from xxx而是 select name from xxx,指定所要查询的字段,这就是覆盖索引,这些select的数据列只需要用辅助索引就可以获取,不需要查主键索引(可以结合第二范式去理解,我们用主键索引在select *场景使用无非就是其他的键都依赖于主键),这样我们只需要查询一遍辅助索引即可得到想要的数据——>,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。......原创 2022-08-28 23:38:08 · 1139 阅读 · 1 评论 -
主键,外键,索引
(47条消息) 主键,外键和索引的区别(详细)_lufyKing的博客-CSDN博客_主键,外键,索引转载 2022-08-22 20:54:22 · 128 阅读 · 0 评论 -
Mysql的三大日志
当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到redo log里面(redolog日志是循环追加写的,属于顺序IO,记录的速度在某些程度上可以和内存相媲美),并更新内存,这个时候更新就算完成了。,这种崩溃恢复不需要我们人为的参与,MySQL自己内部自己实现了这种崩溃恢复的功能,我们只管享受这种功能给我们带来的服务即可,这种服务给我们的感受就是:MySQL数据库异常宕机的时候。,而一个事务很可能只修改一个数据页里面的几个字节,这个时候将完整的数据页刷到磁盘的话,太浪费资源了!原创 2022-08-22 16:21:02 · 398 阅读 · 0 评论 -
sql编码bug
之前在写订单业务中,我远程了用户信息模块和课程信息模块,然后封装到订单类中进行插入,全程debug一遍发现数据都是正常的,没有编码问题,当调用insert插入到数据库中时候发现出现了bug,中文乱码,猜测是server到sql时候可能编码有问题。对有问题的表设置下字符集。...原创 2022-07-26 17:10:30 · 92 阅读 · 1 评论 -
我们为什么要使用索引+select *(面试)
目录做个比喻为什么要使用它索引的注意事项 索引是怎么样降低IO次数的为什么不用select *(深入)1. 不必要的磁盘I/O 通过索引我们查询数据时可以不用读取完所有信息,而只是查询索引列;否则,索引库系统将会读取每条记录的所有信息进行匹配;可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。索引:就是根据表中的一列或者多个列(多个字段构成的索引)——原创 2022-07-10 13:15:06 · 1186 阅读 · 0 评论 -
简单理解B树和B+树
首先,我们知道的,我们用B树B+树就是为了增加我们索引的效率(增加查询效率)我们都知道二叉查找树的查找的时间复杂度是O(log N),其查找效率已经足够高了,那为什么还有B树和B+树的出现呢?难道它两的时间复杂度比二叉查找树还小吗?问题:这就要抛出磁盘读写IO效率问题了,众所周知,IO查询效率很低,需要读磁盘将数据加载到内存当中,而在大量数据存储时,我们是不能一下子将所受数据加载到内存中,而是逐渐加载到磁盘页,每个磁盘页对应树的节点,也就是侧面体现出树的节点(数据)越多,磁盘页也就越多,IO也就越多(反推)转载 2022-06-29 13:05:30 · 216 阅读 · 0 评论 -
Mycat+分库分表
目录 分库分表垂直分表垂直分库水平分库水平分表 mycat实操场景:mycat配置mysql读写分离配置 众所周知,单表1000w,库5000w ,当数据达到一定维度,即时索引优化也会导致性能严重下降方案一:我们可以选择氪金,通过提升服务器硬件,增加存储容量,cpu等等方案二:我们可以将数据分散开来,将其分散到不同位置的数据库中——>从而减缓单一数据库性能问题总结:而我们的分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来的大数据库->若干个数据库(其实这里只是将数据放到若干个数据库节点上原创 2022-06-28 16:21:51 · 8775 阅读 · 0 评论 -
sql主从复制搭建
目录mysql主从介绍 主从搭建对主机数据库进行操作 mysql从机复制的步骤: slave会从master读取binlog来进行数据同步1 master主机将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;2 slave将master的binary log events拷贝到它的中继日志(relay log);3 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的 几种处理模式: state原创 2022-06-27 19:21:34 · 569 阅读 · 0 评论 -
sql分析(查询截取分析做sql优化)
目录mysqldump的使用(慢查询分析) 杀死用户 视图 1.开启慢查询日志2.先找到慢查询日志找到common.sock文件里面就是慢查询日志 3.使用日志分析工具 像我们一般分析sql优化就可以使用该日志分析 比如:查找最慢的三条3. 查到对应的sql之后再去集中处理,可以去sql控制台中explain该sql,然后进行sql索引优化 工作常用参考:只负责展示,不需要发布程序 1.创建视图2.创建完视图后,我们以后的查询直接在视图中查询即可(本身这个视图原创 2022-06-27 13:06:57 · 266 阅读 · 0 评论 -
索引+sql练习优化
目录优势劣势什么时候用索引Expain性能分析 分析字段:插入100w数据如何做到最快 1.创建函数(随机产生编号以及随机名字) 2.创建存储过程插入数据(利用上面两个函数得到随机编号以及名字)流程: 3.创建索引用图表示多字段索引的执行 练习 索引是如何找到数据的注意事项 小总结一些建议关联查询关联查询实例 关联查询小结论:关联优化测试索引对于分组查询的影响排序分组优化 还一个很优化的点(覆盖索引):作业(sql练习+优化) 通过索引提高数据检索效率,降低IO成本 ,但是用了索引也会降低更新的效率,每次修原创 2022-06-27 00:50:42 · 585 阅读 · 0 评论 -
SQL高级
目录介绍以及命名规则 在linux在安装mysql5.7数据存放的位置字符集问题远程连接 如何给用户授权 分组的问题 查询每个机构年龄最大的人 缓存和缓冲的区别:底层逻辑架构 打开缓存,利用show profile查看sql执行周期(是否因为缓存命中而减少时间) 存储引擎MyISAM与InnoDB的区别:然后讲到两种存储引擎的区别(InnoDB和MyISAM):什么情况用MyISAM?Archive引擎 csv引擎其他引擎sql预热 练习索引简介,结构正式讲,mysql索引结构 关于数据结构的时间复杂度原创 2022-06-25 01:22:36 · 390 阅读 · 0 评论 -
Spring事务
首先要明白,为什么要事务管理?当你数据出现异常情况时,可以保证数据的一致性—>正确就数据发生改变,否则数据回滚;事务管理方式:Spring有两种事务管理方式:编程式事务管理+声明式事务管理;编程式事务:使用TransactionTemplate或者使用PlatformTransactionManager;声明式事务:建立在AOP之上,本质是对方法的前后进行拦截—>在目标方法之前或者之后加入一个事务(目的就是根据目标方法执行的情况决定是否回滚事务)好处:声明式事务的话就不原创 2022-02-12 22:20:18 · 697 阅读 · 0 评论 -
Sql优化-limit
在有些情况下,你知道sql的结果只是一条数据,但是你根据条件去crud时却可能有多条:create table t_user( id int primary key auto_increment, email varchar(255), password varchar(255) ); 假设每个用户的email是唯一的,要求我们用email查询用户:SELECT * FROM t_user WHERE email=?; 就算根据email查询到用户,但是它不会原创 2022-02-10 23:42:15 · 812 阅读 · 0 评论