![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 61
菜鸟的突变
追梦的菜鸟
展开
-
MySQL主从复制
MySQL主从复制主库设置:vi /etc/my.cnfmy.cnf修改内容:log_bin=mysql-bin 设置开启binlogserver-id=1 指定唯一serverIDsync-binlog=1 同步磁盘binlog-ignore-db=performance_schema 同步忽略库binlog-ignore-db=information_schemabinlog-ignore-db=sys重启mysql:systemctl restart mysqld进入mysql原创 2021-09-26 16:18:16 · 205 阅读 · 0 评论 -
Mysql-5.7安装步骤
Mysql-5.7安装步骤下载链接:https://pan.baidu.com/s/1x0wPAAJ9vwUC1IkjUVeT4g 提取码:zo2v第一步:解压:tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar第二步:检查是否有mariadb-libs-5.5.60-1.el7_5.x86_64,执行命令:rpm -qa|grep mariadb如果存在需要删除:执行命令rpm -e mariadb-libs-5.5.60-1.el7_5.x86_原创 2021-09-26 16:15:37 · 540 阅读 · 0 评论 -
MySQL大总结
一张表,里面id是自增主键,当插入17条数据以后,在删除15-17的数据,这时候把MySQL给重启,在insert一条数据,这时候主键id是15还是18?答:如果是myisam引擎,那么就是18,理由:myisam表会把自增主键记录存储在数据文件中,MySQL引擎重启以后,数据文件是不会丢失的。innodb引擎,就是15,理由:innodb把自增长ID记录存放入内存中,在重启数据库或者对表进行optimize操作,都会导致最大ID丢失Heap表是什么?heap表存在于内存中,用于临时高速存储的。.原创 2020-12-08 14:01:11 · 104 阅读 · 0 评论 -
MySQL常问锁的面试题
什么是锁?锁(lock)在多人处理同一个数据的时候,保证每次只有一个人可以操作。MySQL提供了页锁(全局锁)、行锁、表锁。其中innodb采用的是行锁和表锁,myisam只支持表锁。什么是死锁是指二个或者二个以上的进程在执行时候,因为争夺资源造成相互等待的现象,进程一直处于等待中,无法得到释放,这种状态就叫做死锁,死锁出现的案列批量入库,存在则更新,不存在则插入,insert into tab(xx,xx) on duplicate key update xx=‘xx’。如何处理死锁?1:通原创 2020-12-07 15:03:27 · 457 阅读 · 0 评论 -
面试题 innodb中MVCC如何实现?
在理解MVCC,我们需要先理解其他的知识点(1)数据库为什么需要用事务?为了保证数据存储过程中数据的最终一致性(2)事务包含几种特征?原子性、一致性、隔离性、持久性(3)事务并发会存在哪些问题?事务并发会出现脏读、不可重复读、幻读(4)如何解决事务并发出现的问题?设置事务隔离级别,读未提交,读提交,重复读,序列化(5)事务通过什么实现事务的隔离性?加锁(6)加锁会带来哪些问题?读的时候无法写,写的时候无法读,同时降低了数据库的性能(7)数据库是如何实现加锁以后带来的性能问题?使用原创 2020-12-03 18:40:05 · 769 阅读 · 0 评论 -
MySQL线程池、连接池
在客户端请求的数据量比较大的时候,使用线程池可以节约大量的系统资源,节约了大量的CPU和内存。而数据库的连接池的使用将大大的提高程序运行的效率,线程池的原理:线程池的原理,类似于操作系统中的缓存区,先创建若干数量的线程,让这些线程处于休眠状态,当客户有请求,就唤醒线程池中的一个线程,处理请求。在高并发的情况下,如果采用使用一个创建一个线程会极大的消耗内存资源,直接采用线程池的减少系统不断的创建和销毁线程。数据库连接池数据库的连接数是非常珍贵的资源,所以在程序启动的时候创建足够多的数据库连接,并把这些原创 2020-11-30 19:01:25 · 501 阅读 · 0 评论 -
mysql之char和varchar的区别
char和varchar都是用来存储字符串的,但是他们保存和索引的方式是不一样的char是固定长度的字符串,varchar是可变长度的字符串由于char是固定长度的所以它的处理速度比varchar要快,缺点是浪费空间,读取char类型的数据如果尾部有空格会自动去除空格,所以对于那些长度变化不大并且对查询速度比较高的数据优先考虑char存储类型,不同引擎对char 和varchar的使用原则有所不同:myisam引擎:建议使用固定长度的数据列代替可变长度的数据列memory引擎:都是使用固定长度的数原创 2020-12-02 10:58:44 · 252 阅读 · 0 评论 -
MySQL实现事务的提交和回滚
什么是事务?事务是数据库中一系列的访问和更新组成的逻辑执行单元,事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,这段逻辑要么全部执行成功,要么全部执行失败。也就是说事务就是用来保证一系列操作的原子性,数据库为了保证事务的原子性和持久性,引入了redo log 和 undo logredo logredo log是重做日志,是物理日志,记录的是物理数据页的修改,它用来恢复叫后的物理数据页,redo log 分为两部分:内存中的redo log buffer是日志缓冲区,这部分原创 2020-12-02 16:46:42 · 1586 阅读 · 0 评论 -
MySQL解析MVCC
什么是MVCC?MVCC全称 multi-version concurrency control,即多版本并发控制。MVCC是一种并发控制方法,在数据库管理中,实现对数据库的并发访问。MVCC在MySQL innodb中实现主要是为了提高数据库并发性能,使用更好的方法去处理读-写的操作,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。什么是当前读和快照读?当前读:像select lock in share mode(共享锁), select for update ; update, insert原创 2020-12-03 16:18:40 · 144 阅读 · 0 评论 -
缓存异常场景深入分析
缓存异常场景1. 缓存穿透2. 缓存击穿3. 缓存雪崩4. 缓存预热5. 缓存降级缓存穿透:缓存穿透是指缓存和数据库都没数据,而用户不断发起请求,这时的用户很可能就是攻击者,攻击会导致数据库过大的压力解决方案:1.设置缓存空对象;2.布隆过滤器缓存击穿:缓存击穿是指缓存中没有但是数据库中有(一般是缓存时间到期),这时由于并发用户请求比较多,同时读缓存没有读到数据,又同时去数据库读取数据,引起数据库压力瞬间增大;解决方案:1.设置热点数据永不过期;2.使用互斥锁排队;3.缓存屏障;缓存雪崩原创 2020-12-04 14:44:35 · 133 阅读 · 0 评论 -
数据库缓存如何实现数据一致性
在项目开发的时候,我们会经常发现,首页或者热门的数据都 存放在缓存中而不是直接请求数据库,并发情况下直接请求数据库,会增加数据库的服务压力,这时候就需要引入缓存,缓存目前用的比较多的是(redis,memcache 一个是单线程一个是多线程),在数据库被更新的时候就存在缓存数据没有被更新,导致缓存和数据库的数据不一致的问题。解决方案一:通过key的过期时间控制,MySQL更新,缓存不更新,但两者数据不一致的时间过长的话。在并发较高的情况下,过期时间过长,会产生很多长期的脏数据;不足点:完全依赖过期时原创 2020-12-04 18:54:12 · 345 阅读 · 0 评论