首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    缓存击穿,商详页进不去

    然而却触动了小猫的神经,他赶紧打开app,发现自己的也进不去了。他赶紧打开Grafana,脸色苍白,口干舌燥....数据库连接全部打满。...无效key值处理 这种情况其实很简单,既然由于没有在缓存数据库中找到数据,那么咱们也不应该直接将redis中那些Key值直接删除,这样找不到key的话,肯定还是会打到数据库,所以我们只要避免请求去查数据库就可以...这样的话redis中的key一定就是全量的,客户端查询数据的时候顶多也就是查不到。...关于这两种过滤器的用法,老猫在此就不做赘述,篇幅过长,大家可能都会丧失读下去的欲望,所以就到此打住,感兴趣的小伙伴可以自行去找一下相关的资料,然后写个demo玩玩。...原创不易,都看到这,求个点赞、关注、在看三连呗,感谢支持。

    12910

    MySQL 死锁,怎么办?

    所以在线上千万不要执行没有带索引条件的 update 语句,不然会造成业务停滞,我有个读者就因为干了这个事情,然后被老板教育一波,详细可以看这篇「完蛋,公司被一条 update 语句干趴!」...# 事务 A mysql> begin; Query OK, 0 rows affected (0.01 sec) mysql> select * from t_order where order_no...因为如果不添加间隙锁的话,会让唯一二级索引中出现多条唯一二级索引列值相同的记录,这就违背 UNIQUE 的约束。...下面举个唯一二级索引冲突的例子,MySQL 8.0 版本,事务隔离级别为可重复读(默认隔离级别)。...---- 参考资料: 《MySQL 是怎样运行的?》 http://mysql.taobao.org/monthly/2020/09/06/ ---- 最后说个段子: 面试官: 解释下什么是死锁?

    1.5K20

    MySQL - 删库,但是很慢

    mysql 上执行了一句 drop database 半天没有完成,详细的慢查询日志如下,那当时MySQL 在做什么呢?...如果我们从 linux 内核层面看,还是可以发现 mysql 这个时候在执行哪些函数的;从而达到更加细粒度的确认 MySQL 在做什么,进而回答 drop database 为什么慢。...可以看到在删库时调用的是 mysql_rm_db 这个函数,而这个函数又调用了 mysql_rm_table_no_locks 函数,mysql_rm_table_no_locks 会去清理数据字典。...前面的操作都还比较轻,耗时主要应该是花在删除磁盘文件上。...和当事人确认后得知他这个库里面,数据量并不大(不会超过 1GB);但是表特别多,一个逻辑表对应着 10000 个物理表,一套业务走下来,导致这个库里面有几十万个表,这个也就是 drop database 慢的原因

    2.4K20

    MySQL 表分区?涨知识

    %'; 命令来查看: 我们进入到这个目录下,就可以看到我们定义的所有数据库,一个数据库就是一个文件夹,一个库中,有其对应的表的信息,如下: 在 MySQL 中,如果存储引擎是 MyISAM,那么在...为了解决这个问题,我们可以利用 MySQL 的分区功能,在物理上将这一张表对应的文件,分割成许多小块,如此,当我们查找一条数据时,就不用在某一个文件中进行整个遍历,我们只需要知道这条数据位于哪一个数据块...2.2 垂直切分 先来一张简单的示意图,大家感受一下垂直切分: 所谓的垂直切分就是拿着我 40 米大刀,对准黑色的线条砍。.../test08 文件夹中,来看刚刚创建的表文件: 可以看到,此时的数据文件分为好几个。...举个例子大家看下就明白: 假设我有一个用户表,用户有性别,现在想按照性别将用户分开存储,男性存储在一个分区中,女性存储在一个分区中,SQL 如下: create  table  user(   id

    5.2K20

    MYSQL 8 MySQL DBA 也该学学复杂查询

    MYSQL 一直被diss的就是数据分析尤其在窗口函数这一块,相对于O , S , P三个数据库,MYSQL在这方面基本上属于空白。MYSQL 8 的到来后,这方面也有改变。...在别的数据库上有的专门的课程 T-SQL, PLPGSQL, PLSQL等等,也是否有可能在MYSQL上,随着MYSQL8的使用,出现 M- SQL。...这样的操作在MYSQL 5.7中如果要操作的话,这是达到同样结果的写法,在MySQL 5.7 但实际上有些查询在MYSQL5.7是不能进行的。...下面这个语句的意思是,根据员工的工资进行一个排序根据每个员工的工号作为一个排序的partition by ,从这里可以看到每个员工的随着在公司工作的年限,越长,工资的涨幅和总数都是一个向上的过程,这样的复杂操作如果在MYSQL...下面这个SQL 就是相关的完成上面的工作的,如果在MYSQL上完成类似的语句,不使用这样的窗口函数,在 事实上这些也只是窗口函数的冰山一角,以上也仅仅是抛砖引玉,需要学习的东西还很多。

    92610

    MySQL 8】MySQL 5.7即将停止维护,是时候看看MySQL 8

    MySQL 8新特性 选择MySQL 8的背景:MySQL 5.6已经停止版本更新,对于 MySQL 5.7 版本,其将于 2023年 10月31日 停止支持。后续官方将不再进行后续的代码维护。...:https://www.mysql.com/why-mysql/benchmarks/mysql/ 除了高性能之外,MySQL 8还新增很多功能,我找了几个比较有特点的新特性,在这里总结一下。...当最有效的扫描顺序混合某些列的升序和其他列的降序时,降序索引还使优化器可以使用多列索引。...「函数索引的实现原理:」 函数索引在MySQL中相当于新增一个列,这个列会根据函数来进行计算结果,然后使用函数索引的时候就会用这个计算后的列作为索引,其实就是增加了一个虚拟的列,然后根据虚拟的列进行查询...这里不多做举例(有没有一种可能是作者太懒?),官方文档上面那是相当的详细!

    3.3K10

    MySQL 5.7都即将停只维护,是时候学习一波MySQL 8

    MySQL 8新特性选择MySQL 8的背景:MySQL 5.6已经停止版本更新,对于 MySQL 5.7 版本,其将于 2023年 10月31日 停止支持。后续官方将不再进行后续的代码维护。...…除了高性能之外,MySQL 8还新增很多功能,我找了几个比较有特点的新特性,在这里总结一下。...当最有效的扫描顺序混合某些列的升序和其他列的降序时,降序索引还使优化器可以使用多列索引。...函数索引的实现原理:函数索引在MySQL中相当于新增一个列,这个列会根据函数来进行计算结果,然后使用函数索引的时候就会用这个计算后的列作为索引,其实就是增加了一个虚拟的列,然后根据虚拟的列进行查询,从而达到利用索引的目的...这里不多做举例(有没有一种可能是作者太懒?),官方文档上面那是相当的详细!

    58950

    MySQL 的 join 功能弱爆

    关于MySQL 的 join,大家一定了解过很多它的“轶事趣闻”,比如两表 join 要小表驱动大表,阿里开发者规范禁止三张表以上的 join 操作,MySQL 的 join 功能弱爆等等。...本篇文章的主角是 MySQL,下文没有特别说明的话,就是以 MySQL 的 join 为主语。...这也导致整个过程的时间复杂度编程 N * M,这是不可接受的。所以,当没有索引时,MySQL 使用 Block Nested-Loop Join 算法。...5次 这个流程体现该算法名称中 Block 的由来,分块去执行 join 操作。...可惜这两个算法 MySQL 的主流版本中目前都不提供,而 Oracle ,PostgreSQL 和 Spark 则都支持,这也是网上吐槽 MySQL 弱爆的原因(MySQL 8.0 版本支持 Hash

    78320

    MySQL 的 join 功能弱爆

    关于MySQL 的 join,大家一定了解过很多它的“轶事趣闻”,比如两表 join 要小表驱动大表,阿里开发者规范禁止三张表以上的 join 操作,MySQL 的 join 功能弱爆等等。...本篇文章的主角是 MySQL,下文没有特别说明的话,就是以 MySQL 的 join 为主语。...这也导致整个过程的时间复杂度编程 N * M,这是不可接受的。所以,当没有索引时,MySQL 使用 Block Nested-Loop Join 算法。...5次 这个流程体现该算法名称中 Block 的由来,分块去执行 join 操作。...可惜这两个算法 MySQL 的主流版本中目前都不提供,而 Oracle ,PostgreSQL 和 Spark 则都支持,这也是网上吐槽 MySQL 弱爆的原因(MySQL 8.0 版本支持 Hash

    1K00
    领券