小技术君


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Schedule

  • Sitemap

  • Book

  • Markdown

  • Search

查询一行数据怎么很慢?

Posted on 2021-11-02 | In mysql |
为什么查询一行数据也很慢?

1.MySQL数据库本身被堵住了,比如:系统或网络资源不够

2.SQL语句被堵住了,比如:表锁,行锁等,导致存储引擎不执行对应的SQL语句

3.确实是索引使用不当,没有走索引

4.表中数据的特点导致的,走了索引,但回表次数庞大

SQL语句被堵住的原因

  • 表锁
1
mysql> select * from t where id=1;

长时间不返回,一般碰到这种情况的话,大概率是表 t 被锁住了。接下来分析原因的时候,一般都是首先执行一下

show processlist 命令,看看当前语句处于什么状态。然后我们再针对每种状态,去分析它们产生的原因、如何复

现,以及如何处理。

Read more »

删除是不是只能跑路?

Posted on 2021-11-01 | In mysql |
数据恢复过程

1.最近的一次全量备份 -> 2. 从备份的时间点开始,将备份的binlog 依次取出来重放到误删表之前的那个时刻

这样你的临时库就跟误删之前的线上库一样了,按需要恢复到线上库去。

日志模块

与查询流程不一样的是,更新流程还涉及两个重要的日志模块

redo log 是 InnoDB 引擎特有的日志,而 Server 层也有自己的日志,称为 binlog(归档日志)

Read more »

如何优化查询

Posted on 2021-10-30 | In mysql |

查询优化

why?

优化的思路

客户端到服务器 其中包括 检验连接 查询缓存 解析 以及存储引擎涉及的调用 都会带来 cpu 内存 io等开销我们要

做的就是减少这些…

措施

​ 一个是检查是不是返回了 程序不需要的大量数据,大量数据会带来大量cpu以及io等损耗…

​ 一个是检查是不是扫了额外的行记录最简单的衡量查询开销的三个指标:1.响应时间2.扫描的行数3.返回的行

数, 关注数据的访问类型全表扫描 索引扫描 范围扫描 唯一索引扫描等…

Read more »

如何创建高性能索引

Posted on 2021-10-29 | In mysql |
为什么需要索引?

避免去扫全表,存储引擎先走索引找到对应值,然后根据索引记录找到对应的数据行.

优点的话,因为索引使用B+树结构 使得查询数据不再是随机IO,且避免去扫描全表

索引的策略(使用)

单列

不要在where 后面针对索引列计算,因为无法自动解析计算,所以需要避免索引列的一些计算

image-20211013193141024

Read more »

操作系统里的内存管理

Posted on 2021-09-28 | In OS |

图怪兽_f2433484b95076e61f00e5b8b98a68f0_68721

存储器结构

cpu -> 寄存器 -> 高速缓存 -> 主存 -> 磁盘

一种存储器抽象:地址空间

定义: 存储位置列表,存放可执行程序,程序的数据以及堆栈

地址空间是进程可以用来寻址内存的地址集。每个进程都有它自己的地址空间,独立于其他进程的地址空间,但是

某些进程会希望可以共享地址空间

Read more »

操作系统里的进程和线程

Posted on 2021-09-28 | In OS |

图怪兽_81f15acdf27c9e27dd3e2e54d3360863_79599

什么是进程?

一个进程就是一个正在执行的程序的实例,进程也包括程序计数器、寄存器和变量的当前值。从概念上来说,每个

进程都有各自的虚拟 CPU,但是实际情况是 CPU 会在各个进程之间进行来回切换。

进程模型?

一个进程就是一个正在执行的程序的实例,进程也包括程序计数器、寄存器和变量的当前值。从概念上来说,每个

进程都有各自的虚拟 CPU,但是实际情况是 CPU 会在各个进程之间进行来回切换。

Read more »

JMH 性能测试框架

Posted on 2021-08-05 | In java |

图怪兽_18f1392978746a0fee33246215485ddb_12978

概述

JMH 是一个由 OpenJDK/Oracle 里面那群开发了 Java 编译器的大牛们所开发的 Micro Benchmark Framework 。何谓 Micro Benchmark 呢?简单地说就是在 method 层面上的 benchmark,精度可以精确到微秒级。可以看出 JMH 主要使用在当你已经找出了热点函数,而需要对热点函数进行进一步的优化时,就可以使用 JMH 对优化的效果进行定量的分析。

比较典型的使用场景还有:

  • 想定量地知道某个函数需要执行多长时间,以及执行时间和输入 n 的相关性
  • 一个函数有两种不同实现(例如实现 A 使用了 FixedThreadPool,实现 B 使用了 ForkJoinPool),不知道哪种实现性能更好
    Read more »

Maven 多仓库和镜像配置

Posted on 2021-08-05 | In java |

图怪兽_84fb2b366cf8dbe08e84691405f041b0_55848

因为之前maven配置的一直都是公司的私服仓库,今天 拉 JMH包发现拉不到,于是考虑配置多个仓库,可以满足工作以及日常开发需求,顺便梳理 mirrors 和 repository 的区别

maven 设置多个仓库

有两种不同的方式可以指定多个存储库的使用。第一种方法是在 POM 中指定要使用的存储库。这在构建概要文件内部和外部都支持

Read more »

Optional 的使用会导致性能下降吗?

Posted on 2021-07-26 | In 微服务 |

图怪兽_bb2845fd7f5a4c03fb9adb66715a5e02_14370

几天前,我在论坛上发了一篇关于Optional 的文章。其中一条评论是一个非常好的问题:

Optional 的使用会导致性能下降吗?

答案是: 是的,它会的。但是你应该担心吗?

Read more »

如何做好监控微服务调⽤?

Posted on 2021-06-16 | In 微服务 |
监控对象
  • ⽤户端监控。通常是指业务直接对⽤户提供的功能的监控

  • 接口监控。通常是指业务提供的功能所依赖的接口的监控

Read more »
12…14
小技术君

小技术君

生命不息,奋斗不止

137 posts
19 categories
48 tags
RSS
GitHub Email
友情链接
  • Chris Blog
© 2015 — 2021 John Doe
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4