qq_34709713
码龄9年
关注
提问 私信
  • 博客:33,823
    33,823
    总访问量
  • 44
    原创
  • 1,098,173
    排名
  • 1
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2016-04-18
博客简介:

qq_34709713的博客

查看详细资料
个人成就
  • 获得7次点赞
  • 内容获得7次评论
  • 获得39次收藏
创作历程
  • 69篇
    2020年
成就勋章
TA的专栏
  • MySQL
    26篇
  • Redis
    6篇
  • php
    3篇
  • 网络
    9篇
  • 算法
    2篇
  • 分布式
    1篇
  • 操作系统与服务
    4篇
  • swoole
    16篇
  • go
    1篇
兴趣领域 设置
  • 编程语言
    r语言
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 微软技术
    c#.netasp.net
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

347人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

适合各种统计的数据类型

原创
发布博客 2020.11.11 ·
476 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

mysql之mysql数据在磁盘的储存方式

mysql的数据在磁盘上的存储:数据块:由多个磁盘block组成的块,存储引擎负责管理数据块。 磁盘是block块设备,数据在磁盘上的存放也是按照块存放的。 mysql读取表到内存的时候,也必许按照一块一块的方式读取。假设要查询的表在和其他表在都在同一个块内。加载块的时候除了读取要查询的表,其他表也一并被读取出来。 当一个块内的部分表被删除时,这是就是形成了碎片。这样会降低装载到内存的速度。 所以会生成一个块头,记录一个快内表的大小,有无空闲空间,空闲空间的位置。
原创
发布博客 2020.11.11 ·
990 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

哨兵机制

哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三个任务:监控、选主(选择主库)和通知。在监控和选主这两个任务中,哨兵需要做出两个决策:在监控任务中,哨兵需要判断主库是否处于下线状态;在选主任务中,哨兵也要决定选择哪个从库实例作为主库。哨兵进程会使用 PING 命令检测它自己和主、从库的网络连接情况,用来判断实例的状态。如果哨兵发现主库或从库对 PING 命令的响应超时了,那么,哨兵就会先把它标记为“主观下线”。哨兵机制也是类似的,它
原创
发布博客 2020.11.09 ·
384 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

能不能使用join语句?

如果可以使用 Index Nested-Loop Join 算法,也就是说可以用上被驱动表上的索引,其实是没问题的;如果使用 Block Nested-Loop Join 算法,扫描行数就会过多。尤其是在大表上的 join操作,这样可能要扫描被驱动表很多次,会占用大量的系统资源。所以这种 join 尽量不要用。所以你在判断要不要使用 join 语句时,就是看 explain 结果里面,Extra 字段里面有没有出现“Block Nested Loop”字样。在决定哪个表做驱动表的时候,应该是两个表.
原创
发布博客 2020.10.12 ·
237 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

读写分离-过期读的问题解决

强制走主库方案;sleep 方案;判断主备无延迟方案;配合 semi-sync 方案;等主库位点方案;等 GTID 方案。
原创
发布博客 2020.10.12 ·
197 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL怎么保证高可用

主备延迟即“同步延迟”。与数据同步有关的时间点主要包括以下三个:主库 A 执行完成一个事务,写入 binlog,我们把这个时刻记为 T1;之后传给备库 B,我们把备库 B 接收完这个 binlog 的时刻记为 T2;备库 B 执行完成这个事务,我们把这个时刻记为 T3。所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值,也就是 T3-T1。你可以在备库上执行 show slave status 命令,它的返回结果里面会显示 seconds_behind_mast
原创
发布博客 2020.09.28 ·
578 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL主备原理

备库建议设置成只读(readonly)模式。这样做,有以下几个考虑:有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作;防止切换逻辑有 bug,比如切换过程中出现双写,造成主备不一致;可以用 readonly 状态,来判断节点的角色。备库设置成只读了,还怎么跟主库保持同步更新呢?readonly 设置对超级 (super) 权限用户是无效的,而用于同步更新的线程,就拥有超级权限。节点 A 到 B 这条线的内部流程是什么样的?一个事务日志同步的完整过程是这样的:在.
原创
发布博客 2020.09.28 ·
763 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL 是怎么保证数据不丢的?

binlog 的写入机制binlog 的写入逻辑比较简单:事务执行过程中,先把日志写到 binlog cache,事务提交的时候,再把 binlog cache 写到 binlog 文件中。系统给 binlog cache 分配了一片内存,每个线程一个,参数 binlog_cache_size 用于控制单个线程内 binlog cache 所占内存的大小。图中的 write,指的就是指把日志写入到文件系统的 page cache,并没有把数据持久化到磁盘,所以速度比较快。图中的 fsync,才是
原创
发布博客 2020.09.27 ·
434 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

业务高峰期临时性地提升一些性能。

短连接风暴第一种方法:先处理掉那些占着连接但是不工作的线程。第二种方法:减少连接过程的消耗。(风险极高,是我特别不建议使用的方案)慢查询性能问题在 MySQL 中,会引发性能问题的慢查询,大体有以下三种可能:索引没有设计好;SQL 语句没写好;MySQL 选错了索引。QPS 突增问题...
原创
发布博客 2020.09.27 ·
229 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

如何开启并查询慢日志

1、配置文件配置找到[mysqld],在其下面添加如下代码即可.slow_query_log=ONslow_query_log_file=/usr/local/mysql/var/localhost-slow.loglong_query_time=0log-queries-not-using-indexes = 1// 配置好后,重启mysql服务1.slow_query_log该配置项是决定是否开启慢日志查询功能,配置的值有ON或者OFF.2.slow_query_log_file该
原创
发布博客 2020.09.27 ·
319 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

什么是幻读,幻读会有什么问题

什么是幻读?幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。“幻读”做一个说明:在可重复读隔离级别下,普通的查询是快照读,是不会看到别的事务插入的数据的。因此,幻读在当前读下才会出现。第二次查看,发现被修改的“行”,不能称为幻读,幻读仅专指“新插入的行”。当前读:也叫即时读,就是忽略版本控制,读取最新的数据。幻读有什么问题?首先是语义上的是数据一致性的问题。如何解决幻读问题?读锁是行锁,无法解决幻读问题,因此引入间隙锁(GAP锁)间隙
原创
发布博客 2020.09.27 ·
2407 阅读 ·
0 点赞 ·
1 评论 ·
5 收藏

对索引字段做函数操作,会导致全索引遍历查找

对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。需要注意的是,优化器并不是要放弃使用这个索引。放弃了树搜索功能,优化器可以选择遍历主键索引,也可以选择遍历二级索引 ,优化器对比哪个索引更小,就会遍历哪个索引。那些是函数操作? mysql> select count(*) from tradelog where month(t_modified)=7;使用了month()函数因此,该语句就不会走树搜索,而是遍历索引。mysql> select * fr
原创
发布博客 2020.09.26 ·
417 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

order by排序是如何工作的?

Order By排序的方式全字段排序rowid 排序全字段排序初始化 sort_buffer,确定放入 name、city、age 这三个字段;从索引 city 找到第一个满足 city='杭州’条件的主键 id,也就是图中的 ID_X;到主键 id 索引取出整行,取 name、city、age 三个字段的值,存入 sort_buffer 中;从索引 city 取下一个记录的主键 id;重复步骤 3、4 直到 city 的值不满足查询条件为止,对应的主键 id 也就是图中的 ID_Y;
原创
发布博客 2020.09.25 ·
258 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL count()函数

count(*) 的实现方式不同的 MySQL 引擎中,count(*) 有不同的实现方式。MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高;而 InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。为什么InnoDB不直接存储表的总行数?由于InnoDB支持事务,多版本并发控制(MVCC)的原因,InnoDB 表“应该返回多少行”也是不确定的缓存系统保存计数的缺点缓存系
原创
发布博客 2020.09.24 ·
139 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL数据库事务嵌套

一般情况下,整个Yii应用使用了同一个数据库连接,或者说是使用了单例。而在yii\db\Connection中,又对事务对象进行了缓存:class Connection extends Component{// 保存当前连接的有效Transaction对象private $_transaction;// 已经缓存有事务对象,且事务对象有效,则返回该事务对象// 否则返回nullpublic function getTransaction(){ return $this->_t
原创
发布博客 2020.09.24 ·
375 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

MySQL的脏页

什么是脏页?当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。什么是干净页?内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。什么情况下会刷脏页?第一种是“redo log写满了,要flush脏页” 整个系统就不能再接受更新了,所有的更新都必须堵住。第二种是“内存不够用了,要先将脏页写到磁盘” 这种情况是常态第三种是mysql空闲时候第四种是mysql正常关闭时候InnoDB 用缓冲池(buffer pool)管理内存,缓冲池中的内存页有三种状态
原创
发布博客 2020.09.22 ·
451 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

前缀索引使用注意

优点:节省存储空间。缺点:会增加扫描行数,并且不能使用覆盖索引,因为前缀索引存储的数据不够完整,需要回表查询。如果字段前面重复率高,后面重复率低,怎么设计索引?一、第一种方式是使用倒序存储使用reverse()函数,将数据倒叙存储二、使用hash算法再创建一个字段,用来存储hash计算后的数据值,前缀索引可以加到该字段中。怎么判断前缀索引的的最短长度多少合理?mysql> select count(distinct email) as L from SUser;该语句可以查出该字段
原创
发布博客 2020.09.22 ·
369 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

如何选择普通索引和唯一索引

1、从查询上来看普通索引和唯一索引的区别?唯一索引查到一条数据后会直接返回数据,而普通索引查到数据后会继续查找是否还有满足条件的索引。从查询的角度来看,普通索引和唯一索引的差距微乎其微。2、什么是change buffer当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InnoDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然
原创
发布博客 2020.09.22 ·
251 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

事务可重复读是怎么实现的?

一、事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样。二、begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。第一种启动方式,一致性视图是在执行第一个快照读语句时创建的;第二种启动方式,一致性视图是在执行 start transaction with consistent snapshot 时创建的。三、在 My
原创
发布博客 2020.09.21 ·
928 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

全局锁和表锁和行级锁

全局锁1、根据加锁的返回,Mysql可以分为三类锁,全局锁,表锁,行级锁2、全局锁,命令Flush tables with read lock (FTWRL),使整个库都处于只读状态,典型的使用场景是做全库逻辑备份。3、mysqldump 使用参数–single-transaction 的时候,导数据之前就会启动一个事务,来确保拿到一致性视图。而由于 MVCC 的支持,这个过程中数据是可以正常更新的。也可以达到全局锁的效果,因此,全局锁只适用于不支持事务的存储引擎,如果全库都支持事务,不建议使用全局锁
原创
发布博客 2020.09.19 ·
299 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏
加载更多