学习来源:极客时间-MySQL实战45讲,本人购买课程后依据图文讲解汇总成个人见解。
前言
经常会被问到这样一个问题:我的主机内存只有100G,现在要对一个200G的大表做全表扫描,会不会把数据库主机的内存用光了?
这个问题确实值得担心,被系统OOM(out of memory)可不是闹着玩的。但是,反过来想想,逻辑备份的时候,可不就是做整库扫描吗?如果这样就会把内存吃光,逻辑备份不是早就挂了?
所以说,对大表做全表扫描,看来应该是没问题的。但是,这个流程到底是怎么样的呢?
写代码是热爱,写到世界充满爱
学习来源:极客时间-MySQL实战45讲,本人购买课程后依据图文讲解汇总成个人见解。
在MySQL中有两个kill命令:一个是kill query +线程id,表示终止这个线程中正在执行的语句;一个是kill connection +线程id,这里connection可缺省,表示断开这个线程的连接,当然如果这个线程有语句正在执行,也是要先停止正在执行的语句的。
不知道你在使用MySQL的时候,有没有遇到过这样的现象:使用了kill命令,却没能断开这个连接。再执行show processlist命令,看到这条语句的Command列显示的是Killed。
你一定会奇怪,显示为Killed是什么意思,不是应该直接在show processlist的结果里看不到这个线程了吗?
今天,我们就来讨论一下这个问题。
其实大多数情况下,kill query/connection命令是有效的。比如,执行一个查询的过程中,发现执行时间太久,要放弃继续查询,这时我们就可以用kill query命令,终止这条查询语句。
还有一种情况是,语句处于锁等待的时候,直接使用kill命令也是有效的。我们一起来看下这个例子:
学习来源:极客时间-MySQL实战45讲,本人购买课程后依据图文讲解汇总成个人见解。
在前面几篇文章中,我们介绍了MySQL的高可用架构。当然,传统的高可用架构是不能预防误删数据的,因为主库的一个drop table命令,会通过binlog传给所有从库和级联从库,进而导致整个集群的实例都会执行这个命令。
虽然我们之前遇到的大多数的数据被删,都是运维同学或者DBA背锅的。但实际上,只要有数据操作权限的同学,都有可能踩到误删数据这条线。
今天我们就来聊聊误删数据前后,我们可以做些什么,减少误删数据的风险,和由误删数据带来的损失。
为了找到解决误删数据的更高效的方法,我们需要先对和MySQL相关的误删数据,做下分类:
使用delete语句误删数据行;
使用drop table或者truncate table语句误删数据表;
使用drop database语句误删数据库;
使用rm命令误删整个MySQL实例。
Author: haoransun
Wechat: SHR—97
学习来源:极客时间-Nginx核心知识100讲,本人购买课程后依据视频讲解汇总成个人见解。
流程解析:
一个Web请求从红色的线走下来后,会先经过Nginx,再到应用服务(Tomcat/Django),再去访问Redis/MySQL这样的数据库,提供基本的数据功能,由此产生一个问题:应用服务由于要求开发效率高,所以它的运行效率很低,它的QPS/TPS/并发都是受限的,所以把这样的很多应用服务组成集群,向用户提供高可用性。当应用出现集群后,需要Nginx具有反向代理功能,将动态请求传导给应用服务,而应用服务构成集群,则又出现了两个需求,A:动态扩容。B:容灾。因此,反向代理必须具有负载均衡功能;其次,在这样的一个链路中,Nginx处于企业内网的边缘节点,随着网络链路的增长,用户体验的时延会增加,因此,如果能把一些所有用户看起来在一段时间内不变的动态内容缓存到Nginx中,由Nginx直接向用户提供访问,这样用户时延就会减少很多。反向代理引申出的另一个概念即是 缓存,加速我们的访问。(反向代理)
一些css/js/png等静态资源,是没有必要经由应用服务访问的,只需要通过本地文件 系统上放置的静态资源,直接由Nginx进行访问即可。(静态资源)
如果应用服务本身的性能有很多问题,但是数据库服务要比应用服务好的多,因为它的业务场景比较简单,并发性能/TPS都要远高于应用服务,因此可以使用Nginx直接访问数据库/Redis这样的数据库服务,利用Nginx强大的并发性能,实现Web防火墙这样复杂的业务功能(API服务)
转载自 https://www.cnblogs.com/skorzeny/p/10409866.html
单机里面,完美解决锁与事务。
1、使用锁的目的
————多个外部线程同时来竞争使用同一资源时,会彼此影响,导致混乱
————锁的目的,将资源的使用做排它性处理,使同一时间,仅一个线程能访问资源
2、并不是所有的资源,都无法同时服务多个线程 —— 比如,无状态的资源
3、无成员变量/成员变量不存在变化的类—- 就是无状态类 —– 这种类是线程安全的
4、有状态的对象,也不一定是不安全的
———- 如果状态变化是原子的(即没有中间变迁过程,变化不需要时间,没有中间态) —- 那么它一样是线程安全的
5、重要的概念,动作的原子性
6、总结:锁的本质
锁要解决的问题是 ——- 资源数据会不一致
锁要达成的目标是 ——- 让资源使用起来,像原子性一样
锁达成目标的手段 ——- 让使用者访问资源时,只能排队,一个一个地去访问资源
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true