数据库
文章平均质量分 91
Hi丶ImViper
这个作者很懒,什么都没留下…
展开
-
MySQL常见面试题:什么是主从延时?如何降低主从延时?
1. 背景高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗?那具体什么是读写分离又如何解决其中的延迟问题呢?赶快一起来看看吧!监控:MySQL 的主从延迟?影响MySQL 主从延迟的影响?多少的延迟,可以接受?原因:MySQL 主从延迟的产生原因?2. MySQL 主从复制2.1. 作用原点之问原创 2021-09-04 11:03:08 · 664 阅读 · 0 评论 -
java春招面试冲刺系列:mysql基础知识超详细复习
目录基础番外篇MySQL体系结构MySQL基准测试数据库结构优化MySQL的复制功能MySQL日志索引表中有多个索引,优化器怎么决定使用哪个索引SQL查询优化数据库监控常用命令常用函数注意点CentOS中安装MySQL查看MySql数据库物理文件存放位置Mysql执行sql文件关键字解读进阶性能查询数据页的空间利用率事务的传播机制百问实战设计使用count(*)的实现番外篇数据库的扩展没有web服务器那样原创 2021-02-18 11:45:20 · 783 阅读 · 0 评论 -
Redis面试问题大全!为你的春招做好准备!
Table of Contents generated with DocTocRedis介绍Redis特点Redis和Memcached区别Redis内部数据结构字符串字典压缩列表快速列表跳跃列表为什么Redis选择使用跳表而不是红黑树来实现有序集合?Redis应用分布式锁延时队列位图HyperLogLog布隆过滤器Gossip协议Redis单进程单线程方式单进程单线程好处单进程单线程弊端其他一些优秀的开源软件采用的模型多路I/O..原创 2020-12-07 13:49:18 · 983 阅读 · 1 评论 -
MySQL面试问题大全!为你的春招做好准备!
Table of Contents generated with DocToc数据库基础知识数据库的定义什么是SQL?什么是MySQL?MySQL的架构MySQL的binlog有有几种录入格式?分别有什么区别?MySQL常用函数聚合函数数学函数字符串函数日期和时间函数条件判断函数系统信息函数加密函数索引B+树索引和哈希索引的区别B树和B+树的区别聚集索引和辅助索引聚集索引辅助索引联合索引什么情况下应不建或少建索引哪些情况会导致索引失效..原创 2020-12-07 13:47:56 · 667 阅读 · 1 评论 -
一文搞定Redis数据库面试问题!为你的春招做准备!
Table of Contents generated with DocTocRedis介绍Redis特点Redis和Memcached区别Redis内部数据结构字符串字典压缩列表快速列表跳跃列表为什么Redis选择使用跳表而不是红黑树来实现有序集合?Redis应用分布式锁延时队列位图HyperLogLog布隆过滤器Gossip协议Redis单进程单线程方式单进程单线程好处单进程单线程弊端其他一些优秀的开源软件采用的模型多路I/O..原创 2020-12-05 10:56:09 · 830 阅读 · 0 评论 -
一文搞定Mysql数据库面试问题!为你的春招做好准备!
Table of Contents generated with DocToc数据库基础知识数据库的定义什么是SQL?什么是MySQL?MySQL的架构MySQL的binlog有有几种录入格式?分别有什么区别?MySQL常用函数聚合函数数学函数字符串函数日期和时间函数条件判断函数系统信息函数加密函数索引B+树索引和哈希索引的区别B树和B+树的区别聚集索引和辅助索引聚集索引辅助索引联合索引什么情况下应不建或少建索引哪些情况会导致索引失效..原创 2020-12-05 10:55:39 · 966 阅读 · 0 评论 -
MySQL数据库开发规范详细解析!为你的春招做准备!
Table of Contents generated with DocTocMySQL数据库开发规范MySQL数据库开发规范所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小敏感,见名知意,最好不超过32字符)所有的数据库对象名称禁止使用MySQL保留关键字(如 desc、range、match、delayed 等,请参考 MySQL 官方保留字http://dev.mysql.com/doc/refman/5.7/en/keywords.html)临时库表必须以t..原创 2020-12-05 10:54:12 · 274 阅读 · 0 评论 -
Redis面试系列:通俗理解多种IO模型
通俗理解多种IO模型前言我们以故事来讲我们经常遇到的多种IO模型,首先故事的情节是老李去买火车票,三天后买到一张退票,其中往返车站耗时1小时。里面主要包含的人员有:老李,黄牛,售票员,快递员多种IO模型阻塞IO模型老李去火车站买票,排了三天队买到一张退票耗费:在火车站等了三天,其它一件事都没做非阻塞IO模型老李去火车站买票,每隔12个小时去火车站问有没有退票,然后在三天后买到一张票。耗费:往返车站6次,路上6小时,其它时间做了很多事IO复用模型select 和 poll原创 2020-12-04 00:39:03 · 1359 阅读 · 0 评论 -
Redis面试系列:Redis中的跳跃表
Redis中的跳跃表前言跳跃表是一种有序的数据结构,它通过在每个节点维持多个指向其他节点的指针,从而达到快速访问节点的目的。什么是跳跃表对于单个链表来讲,即便链表中存储的数据是有序的,如果我们要向在其中查找某个数据,它只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,达到了O(n)。如果我们想要提高其查询效率,可以考虑在链表上构建索引的 方式,每两个节点提取一个节点到上级,我们把抽出来的那一级就叫做索引。这个时候,我们假设要查找节点8,我们可以心在索引层遍历,当遍历到索引层中值为原创 2020-12-04 00:38:28 · 1572 阅读 · 0 评论 -
Redis面试系列:Redis中的数据结构
Redis中的数据结构前言Redis是一个高性能的分布式内存数据库,在国内外个大互联网公司中都有着广泛的使用,即使是一些非互联网公司也有着非常重要的使用场景。Redis提供了五种主要的数据类型,它提供了强大且实用的功能,然而实际开发中,有大多数的开发者仅仅只会使用简单的 Redis String的 Get和Set,下面将回顾Redis五大对象,以便能够在实战中游刃有余。String(终究是我扛下来所有)Hash(存储对象我也行)List(栈和队列我都行)Set(标签系统我在行)Sort S原创 2020-12-04 00:37:56 · 1573 阅读 · 0 评论 -
Redis面试系列:Redis实现分布式锁
Redis实现分布式锁前言分布式锁的实现有三种方式数据库乐观锁基于Redis的分布式锁基于Zookeeper的分布式锁分布式锁满足的条件为了确保分布式锁可用,我们至少要保证锁的实现同时满足以下几个条件互斥性:在任意时刻只有一个客户端能持有锁不会死锁:即使有一个客户端在持有锁的期间发生崩溃而没有主动解锁,也能保证后续其它客户端能加锁容错性:只要大部分的Redis节点正常运行,客户端就可以加锁和解锁解铃还须系铃人:加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解除加锁原创 2020-12-04 00:37:29 · 2064 阅读 · 3 评论 -
Redis面试系列:Redis缓存穿透-布隆过滤器
Redis缓存穿透-布隆过滤器缓存穿透我举个蘑菇博客中的案例来说,我现在有一个博客详情页,然后博客详情页中的内容假设是存储在Redis中的,然后通过博客的Uid进行获取,正常的情况是:用户进入博客详情页,然后通过uid获取redis中缓存的文章详情,如果有内容就直接访问,如果不存在内容,那么需要访问数据库,然后从数据库中查询我们的博客详情后,然后在存储到redis中,最后在把数据返回给我们的页面。但是可能存在一些非法用户,他可能会模拟出很多不存在的key,然后通过该key去请求后台,首先redis的缓原创 2020-12-04 00:34:21 · 2087 阅读 · 0 评论 -
Redis面试系列:从底层了解IO多路复用模型
从底层了解IO多路复用模型前言当我们去面试的时候,问到了 redis,nginx,netty他们的底层模型分别是什么?redis -> epollnginx-> epollnetty-> epoll?需要从操作系统的层面上来谈BIO当我们开机的时候,首先被加载进内存的是我们的Kernel(内核),内核是用于管理我们的硬件的,同时内核还会创建一个GDT表,然后划分两个空间(用户空间和内核空间),同时空间中的内容是开启了保护模式,无法被修改的。同时还有一个CPU的概念,C原创 2020-12-04 00:28:54 · 4101 阅读 · 2 评论 -
MyBatis 缓存机制详细解析!为面试做准备!
MyBatis 缓存机制前言缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。缓存体系结构:MyBatis 跟缓存相关的类都在cache 包里面,其中有一个Cache 接口,只有一个默认的实现类 PerpetualCache,它是用HashMap 实现的。我们可以通过 以下类找到这个缓存的庐山真面目DefaultSqlSession-> BaseExecut原创 2020-12-03 13:13:27 · 1584 阅读 · 0 评论 -
Mybatis plus关闭驼峰命名,防止出现查询为Null!四种方法超详细解析!
问题数据查询出后其中几个字段为null解决方法:数据库的字段命名方式为使用下划线连接,对应的实体类应该是驼峰命名方式,而我使用的是和数据库同样的命名方式。所以mybatis-plus映射不到,修改实体类的字段命名方式为驼峰命名方式。这是因为mybatis默认开启驼峰命名法,按规则数据表中的lastName字段应对应实体类中的last_name属性,而实体类中的lastName属性应对应数据表中的last_name字段。修改方法1可以通过配置文件来关闭驼峰命名我们可以通过configura原创 2020-10-29 09:40:07 · 9197 阅读 · 3 评论 -
Mybatis-Plus中的代码生成器AutoGenerator超详细解析!完整配置!
集成AutoGenerator快速搭建项目注明 : AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。1. pom.xml 展示<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/原创 2020-10-28 21:42:11 · 12256 阅读 · 3 评论 -
mybatis-plus入门教程!看完必懂!超详细解析!
前言:mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。一、mybatis-plus简介:Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,原创 2020-10-28 12:25:01 · 2709 阅读 · 0 评论 -
mybatis-plus进阶教程!超详细使用方法解析!
前言:关于mybatis-plus的简介以及基本使用,我在入门一文中已做介绍,此处不再赘述。本文主要对mybatis-plus的AR模式、插件、逆向工程、自定义全局操作、公共字段自动填充等知识点进行讲解。欢迎大家关注我的公众号 javawebkf,目前正在慢慢地将简书文章搬到公众号,以后简书和公众号文章将同步更新,且简书上的付费文章在公众号上将免费。一、ActiveRecord:Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个原创 2020-10-28 12:24:04 · 1940 阅读 · 0 评论 -
一个系列搞定MyBatis:Mybatis多表查询
MyBatis多表操作经过了 MyBatis 基本增删改查的学习,而在实际的项目中,我们往往会接触到多表的操作,什么是多表呢, 在实际生活中,每个实体之间往往是存在关系的,而我们的项目却是要依赖数据库将这些实体之间的关系串联起来,从而实现我们的业务,所以这部分,我们着重讲解如何使用 MyBatis 框架处理多张数据表之间的联系,帮助我们更加理解数据库的映射关系(一) 表间关系A:一对多用户和订单/理财产品一个用户可以买好几个批次的理财产品部门和员工一个部门可以有很多员工B:多原创 2020-10-21 12:31:04 · 3604 阅读 · 0 评论 -
一个系列搞定MyBatis:MyBatis快速上手增删改查
MyBatis快速上手增删改查引言-絮絮叨叨作为一个快乐的小码农,在每一个阶段往往都在重复写着不同版本的,学生管理,用户管理,注册登录,从 JavaSE 的控制台版,或者 GUI 版,再到 JavaWeb的 JSP版,再到纯粹使用 HTML 作为前端展示的版本,以及使用一个更新的技术,在此其中,我们用过 txt 做数据库,用 XML 也可以,到现在常用的 MySQL,增删改查一直是我们必不可少的一部分内容,即使你不懂原理,即使你对这个技术的理解不是很深刻,拿出你的增删改查,噼里啪啦就是一段乱敲,好歹还是原创 2020-10-21 12:27:51 · 1472 阅读 · 0 评论 -
一个系列搞定MyBatis:MyBatis配置动态SQL语句基础
MyBatis配置动态SQL语句基础MyBatis配置动态SQL语句在 MyBatis 的 SQL映射文件中,有时候需要根据一些查询条件,来选择不同的SQL语句,如果每一个场景都重写SQL,很显然效率没有很高,而 MyBatis 的动态SQL很好的解决了这种问题,根据条件动态的处理 SQL, 特别简单的说就是,写一次SQL,但是根据分支等的跳转,在多个场景下也可以使用,例如:当查询条件由于参数不同而无法确定具体是什么,可以使用 <where> 标签包含在 <where> 可原创 2020-10-21 12:27:16 · 2346 阅读 · 0 评论 -
一文理解Mybatis!万字长文超详细解析!
Mybatis入门看这一篇就够了什么是MyBatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。是一个基于Java的持久层框架为什么我们要用Mybatis?无论是Mybatis、Hibernate都是ORM的一种实现框架,都是对JDBC的一种封装!到目前为止,我们已经在持久层中学了几种技术了…HibernatejdbcSpringDAO原创 2020-10-07 21:34:34 · 1523 阅读 · 1 评论 -
一个系列搞懂Mysql数据库13:Mysql主从复制,读写分离,分表分库策略与实践
Table of Contents二、分表实现策略三、分库实现策略四、分库与分表实现策略五、分库分表总结六、总结Mycat实现主从复制,读写分离,以及分库分表的实践Mycat是什么一、分区分表二、Mycat 数据分片的种类三、Mycat 垂直切分、水平切分实战1、垂直切分2、水平切分range start-end ,data node indexK=1000,M=10000.* 为什么需要读写分离* MySQL主从复制* Mycat读写分离设置* 配置Myc原创 2020-09-05 09:31:11 · 1441 阅读 · 0 评论 -
一个系列搞懂Mysql数据库12:从实践sql语句优化开始
Table of Contents字段索引查询SQL引擎MyISAMInnoDB0、自己写的海量数据sql优化实践mysql百万级分页优化 普通分页 优化分页 总结除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT原创 2020-09-05 09:30:34 · 1492 阅读 · 0 评论 -
一个系列搞懂Mysql数据库10:MySQL里的那些日志们
Table of Contents重新学习MySQL数据库10:MySQL里的那些日志们1.MySQL日志文件系统的组成2.错误日志3.InnoDB中的日志4- 慢查询日志5.二进制日志总结重新学习MySQL数据库10:MySQL里的那些日志们同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的原创 2020-09-05 09:28:37 · 924 阅读 · 1 评论 -
一个系列搞懂Mysql数据库9:Innodb中的事务隔离级别和锁的关系
Table of ContentsInnodb中的事务隔离级别和锁的关系事务中的加锁方式* MySQL中锁的种类Read Committed(读取提交内容)Repeatable Read(可重读)* 不可重复读和幻读的区别悲观锁和乐观锁MVCC在MySQL的InnoDB中的实现“读”与“读”的区别Innodb中的事务隔离级别和锁的关系前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时原创 2020-09-05 09:27:19 · 1083 阅读 · 0 评论 -
一个系列搞懂Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现
Table of Contents三类常见引擎:如何选择存储引擎:Mysql中的锁MyISAM的锁机制:并发插入锁调度InnoDB锁模式锁的实现方式:何时在InnoDB中使用表锁:死锁:避免死锁:说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同。三类常见引擎:MyIsam :不支持事务,不支持外键,所以访问速度快。锁机制是表锁,支持全文索引InnoDB :支持事务、支持外键,所以对比MyISAM,InnoDB的处理效率差一些,并要占更多的原创 2020-09-05 09:25:29 · 1051 阅读 · 0 评论 -
一个系列搞懂Mysql数据库6:浅谈MySQL的中事务与锁
Table of Contents『浅入深出』MySQL 中事务的实现原子性回滚日志事务的状态并行事务的原子性持久性重做日志回滚日志和重做日志隔离性事务的隔离级别隔离级别的实现锁时间戳多版本和快照隔离隔离性与原子性一致性ACID总结浅谈数据库并发控制 - 锁和 MVCC概述悲观并发控制读写锁两阶段锁协议死锁的处理预防死锁死锁检测和恢复锁的粒度乐观并发控制基于时间戳的协议基于验证的协议多版本并发控制MySQL 与 MVCCPos原创 2020-09-05 09:24:51 · 1515 阅读 · 1 评论 -
一个系列搞懂Mysql数据库5:根据MySQL索引原理进行分析与优化
Table of Contents一:Mysql原理与慢查询一个慢查询引发的思考二:索引建立三:浅析explain用法有什么用?怎么使用?参数介绍idselect_typeextrapossible_keyskeykey_lenrefrows四:慢查询优化建索引的几大原则回到开始的慢查询查询优化神器 - explain命令慢查询优化基本步骤五:最左前缀原理与相关优化情况一:全列匹配。情况二:最左前缀匹配。情况三:查询条件用到了索引中列的精原创 2020-09-05 09:23:53 · 2081 阅读 · 0 评论 -
一个系列搞懂Mysql数据库4:Mysql索引实现原理和相关数据结构算法
Table of ContentsMySQL索引一、简介二、语句三、索引类型四、缺点五、注意事项摘要数据结构及算法基础索引的本质B-Tree和B+TreeB-TreeB+Tree带有顺序访问指针的B+Tree为什么使用B-Tree(B+Tree)主存存取原理磁盘存取原理局部性原理与磁盘预读B-/+Tree索引的性能分析MySQL索引实现MyISAM索引实现InnoDB索引实现索引使用策略及优化示例数据库最左前缀原理与相关优化情况一:全原创 2020-09-05 09:19:29 · 1944 阅读 · 0 评论 -
一个系列搞懂Mysql数据库3:Mysql存储引擎与数据存储原理
前言作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看了几本数据库相关的书籍并且阅读了 MySQL 的官方文档,希望对各位了解数据库的、不了解数据库的有所帮助。本文中对于数据库的介绍以及研究都是在 MySQL 上进行的,如果涉及到了其他数据库的内容或者实现会在文中单独指出。数据库的定义很多开发者在最开始时其实都对数据库有原创 2020-09-04 22:13:42 · 2446 阅读 · 1 评论 -
一个系列搞懂Mysql数据库1:MySQL入门
Table of Contents前言登录MySQL创建数据库创建数据库表增删改查SELECTUPDATEINSERTDELETEWHEREAND 和 ORANDORORDER BYINNOTUNIONASJOINSQL 函数COUNTMAX触发器添加索引普通索引(INDEX)主键索引(PRIMARY key)唯一索引(UNIQUE)全文索引(FULLTEXT)添加多列索引建立索引的时机创建后表的修改添加列修原创 2020-09-04 22:12:40 · 3118 阅读 · 1 评论 -
慎用Insert into select!这里有坑!
Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,女同事发现了可以使用insert into select实现,这样就可以避免使用网络I/O,直接使用SQL依靠数据库I/O完成,这样简直不要太棒了。然后她就被开除了。事故发生的经过。由于数据数据库中order_today数据量过大,当时好像有700W了并原创 2020-09-01 20:37:59 · 1305 阅读 · 0 评论 -
学习Sql语法,看这一篇就够了!速成宝典,看完必懂!
一、基本概念数据库术语数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。行(row) - 表中的一个记录。主键(primary key) - 一列(或一组列),其原创 2020-08-24 21:37:43 · 1108 阅读 · 0 评论