一、前言 这个问题是博主去年面试的时候被大佬问过的问题,当时也不大清楚里面的原理,硬着头皮回答的,当然,最终面试也没过,哈哈。最近刚好研究了这块的一些东西,就有种恍然大悟的感觉,这里分享给大家,欢迎拍砖~ 二、遍历B+树的次数 首先,既然问题是一次查询,那我们肯定是要知道mysql使用的存储引擎是哪个,要根据存储引擎的不同判断索引的结构,然后通过索引的B+树来回答这些问题。 1、mysql的innodb引擎的聚集索引和非聚集索引 网上看到很多资料,有的叫innodb的索引为聚集索引,有的叫做聚
2024-11-08Mysql安装初始化报错 前言:自己安装mysql服务时候执行初始化命令死活不能运行,发现这个报错。在这里分享给大家。 mysqld --initialize; 报错:–initialize specified but the data directory has files in it. Aborting
2024-11-08在MySQL中查看数据库和表的数据大小 在管理和维护MySQL数据库时,了解数据库和表的数据大小是非常重要的。这可以帮助您监控数据库的增长、优化性能以及规划存储需求。本博客将介绍如何使用SQL查询来查看MySQL数据库和表的数据大小。 查看MySQL数据库的总数据大小 首先,我们将学习如何查看整个MySQL数据库的总数据大小,包括所有数据库。以下是SQL查询示例: -- 显示所有数据库的总计 SELECT '总和' AS `数据库`, CONCAT(ROUND(SUM(tabl
2024-11-08问题 kubectl get csr No resources found. 原因 因为原来的ssl证书在重启后失效了,不删除的话,即重启kubelet也无法与master通讯 解决方法 node节点 cd /opt/kubernetes/ssl ls kubelet-client-2021-04-14-08-41-36.pem kubelet-client-current.pem kubelet.crt kubelet.key # 删除所有的证书 rm -rf * # 关闭开启的kub
2024-11-08前言 生产中我们会为表创建历史表(或叫审计表 / audit table / ADT)。历史表是为了记录数据的修改记录、修改类型(增、删、改)、修改时间等信息。 写入历史表常用的方法是通过触发器。举例说明,如下图所示,profile表是在用表,profile_adt是历史表,profile_adt应包含profile的所有字段,另外还需要两个字段(audit_action和audit_time)用于记录修改类型和时间。当profile表有insert / update / delete操作,就会
2024-11-08公司最近在做的一个项目有一个需求就是在用户提交需求后如果24小时内还没有人审核,那么就自动通过审核,也就是需要数据库自动将转状态更新为 “已审核”,基于此需要了解MySQL数据库的事件用法。 我打算在事件里调存储过程,首先创建存储过程auto_pass_order: DELIMITER // create procedure auto_pass_order() BEGIN update g_groupbuy_record set status = '01' where uids in
2024-11-08DBT的好处是显而易见的,它支持连接多达41种数据库。而且不需要你写DDL语句,只要写select语句,DBT会自动帮你推断schema结构,将数据写入到数据库中: 但是使用了一段时间之后,发现DBT也存在着如下这些不足之处: 1. Hive分区表支持度不够好 这个其实很dbt生成sql的方式有关。dbt讲数据写入到数据库的时候,是使用create table as *** 的语句写入到数据库的,对应到Hive的话,会生成如下sql语句: create table te
2024-11-08首先影响查询速度的原因大概有三点: 1: 网络原因 2:代码原因 3:磁盘写入原因 接口入参时间 与 出参时间 用出参时间-入参时间得到最终的毫秒数 写入数据库变慢 1. 将单独 变成 批量 查询速度变得很慢 1. 增加索引,避免索引失效 2.数据量大 有笛卡尔乘积 ,先将笛卡尔积换成数据教少的数据 3.使用中间件 ,读写分离 分库分表 我们可以优化的只有选项2 案例: 第一个添加方法不是在xml循环添加,在service层进行for循环添加 第二个添加方法是在xml循环sql进行添加
2024-11-08/* 多表查询: 内联接 等值联接 inner join 外连接 left outer join right outer join Oracle特有的写法(+) 子查询: */ --内联接的结果 select * from emp e1,emp t1 where e1.mgr = t1.empno; --t1表里面的所有记录都会显示出来, 如果t1.empno 在e1.mg
2024-11-08SQL语句集锦 --语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW
2024-11-08