
数据库
文章平均质量分 64
呢喃coding
个人邮箱 : [email protected]
手机号 : 13269918057
微信号 : wangzhezhilv0
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Undo、Redo、Binlog的相爱相杀
MySQL日志系统核心机制 InnoDB引擎通过Undo Log(记录旧值)和Redo Log(记录新值)实现事务的原子性和持久性。Undo Log用于事务回滚和MVCC多版本控制,Redo Log采用WAL机制确保崩溃恢复时重做已提交事务。Binlog作为Server层逻辑日志,支持主从复制和时点恢复,提供STATEMENT/ROW/MIXED三种记录模式。事务提交遵循"Undo→Redo prepare→Binlog→Redo commit"流程,崩溃恢复时Redo重做结合Undo回原创 2025-07-31 00:00:00 · 746 阅读 · 0 评论 -
MySQL 锁机制 15 连问 · 面试速答版
本文系统梳理了MySQL锁机制的核心知识点,采用锁层级脑图(表锁/行锁)、15个高频问答、3个记忆口诀和面试彩蛋四部分展开。重点解析了行锁与表锁区别、意向锁作用、乐观锁实现、记录锁/间隙锁/临键锁特性,以及RR隔离级别如何通过MVCC和临键锁防止幻读。同时提供了避免死锁的实用建议(顺序加锁、批量操作)和典型问题解决方案(如无索引更新导致全表锁的应对措施)。摘要整合了锁机制的核心概念和实战技巧,适合快速掌握MySQL锁相关的面试要点。原创 2025-07-28 11:20:48 · 337 阅读 · 0 评论 -
mysql分页查询优化
在数据量较大的情况下,使用LIMIT偏移量会导致查询效率低下。这种查询会读取 50050 条数据,并丢弃前 50000 条,只返回后 50 条。随着页码增大,查询的效率会显著降低。原创 2024-06-04 20:34:55 · 396 阅读 · 0 评论 -
mysql 索引和null值的关系
设计索引时,应充分考虑NULL值对索引效率和查询优化的潜在影响。对于可能包含大量NULL值的列,需要仔细权衡是否创建索引,以平衡查询性能与存储开销。:索引选择性衡量索引中不同值的比例,高选择性代表索引效率高。含有大量NULL值的索引会降低选择性,可能影响优化器对索引使用的决策。:索引包含NULL值会占用额外空间,因为每条索引记录需标记NULL状态,轻微增加索引大小和维护开销。等)且值为NULL,索引可能不会被使用,因为NULL与其他值的比较(除非。:在含有NULL值的索引列上,使用。原创 2024-06-03 20:42:44 · 979 阅读 · 1 评论 -
MySQL在某些情况下不使用索引
2、索引选择性低:如果索引列的值重复度很高(比如性别列,只有“男”和“女”两个值),索引的选择性就很低,这意味着使用索引可能并不会明显减少需要检查的行数,这时MySQL查询优化器可能会决定放弃使用索引而选择全表扫描。4、函数或表达式使用:在WHERE子句中,如果对索引列使用了函数或复杂的表达式,索引可能无法被有效利用,因为索引是基于列的原始值建立的。7、最左前缀原则:对于复合索引(多列索引),如果查询条件没有从索引的第一列开始,那么后续的列索引将无法被利用。原创 2024-06-03 20:39:07 · 406 阅读 · 0 评论 -
数据库主键设计:深入探讨与实践
在数据库设计中,主键的选择和生成策略对于系统的性能、可维护性和扩展性至关重要。本文将深入探讨几种常见的主键生成策略,分析它们的优缺点,并提供一些优化建议。原创 2024-05-15 11:45:06 · 507 阅读 · 0 评论 -
数据库乐观锁
如果有冲突,则回滚事务。如果写操作非常频繁,乐观锁可能会导致大量的重试和性能下降。在这种情况下,可能需要考虑使用其他并发控制策略,如悲观锁或分布式锁。如果更新操作没有影响到任何行(即返回的行数为0),则表示有其他事务修改了数据,此时应根据业务需求进行处理,例如重试、记录日志或返回错误给调用者。在应用程序中,你需要按照上述步骤执行查询和更新操作,并处理可能出现的并发冲突。具体的实现方式取决于你使用的编程语言和框架。综上所述,实现乐观锁时需要注意以上常见错误,并结合具体的业务场景和需求进行合理的设计和实现。原创 2024-03-12 10:20:11 · 761 阅读 · 0 评论 -
mysql怎么给字符串字段加索引?
1. 怎么给字符串字段加索引2. 前缀索引对覆盖索引的影响3. 区分度不大,怎么利用前缀索引?原创 2019-09-12 15:09:22 · 928 阅读 · 0 评论 -
mysql 绑定内网ip 允许指定ip访问 新增用户 授权 修改密码
mysql 绑定内网ip 允许指定ip访问 新增用户 授权 修改密码为什么这么做?我们的服务器是阿里云服务器,刚开始安装mysql是没有做什么特殊的设置,只开放了默认的3306端口,密码使用最简单的root 账号,权限也没有做设置,对外暴露公网ip,所有人都可以访问,非常不安全要做什么?需要在同一个局域网内的多台阿里云服务器只能使用内网地址相互访问,外面地址禁用为了便于...原创 2019-06-06 17:53:39 · 4767 阅读 · 0 评论 -
mysql 备份 导入 导出
导出文件小 ,但是导入速度慢。原创 2023-05-25 16:30:30 · 2386 阅读 · 0 评论 -
一、sql 基础知识、函数和子查询
MySQL 是一种流行的关系型数据库管理系统,使用 SQL 语言进行数据管理和操作。在 MySQL 中,常用的语句包括 SELECT 查询语句、WHERE 条件语句、算术表达式、函数、聚合函数、自定义函数、逻辑表达式、子查询和连接。这些语句可以帮助用户快速地进行数据查询和操作,提高工作效率。原创 2023-03-10 16:18:26 · 832 阅读 · 0 评论 -
mysql准备测试数据
创建表CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`), KEY `b` (`b`)) ENGINE=InnoDB;插入10万条数据delimiter ;;create procedure idata()begin dec.原创 2021-09-14 10:30:15 · 139 阅读 · 0 评论 -
mysql 中存在null和空时创建唯一索引的方法
好多情况下数据库默认值都有null,但是经过程序处理很多时候会出现,数据库值为空而不是null的情况。此时创建唯一索引时要注意了,此时数据库会把空作为多个重复值,而创建索引失败,示例如下:步骤1:mysql> select phone ,count(1) from User group by phone;±----------------±---------+| phone | count(1) |±----------------±---------+| NULL | 70 ||.原创 2020-08-12 19:44:02 · 1180 阅读 · 0 评论 -
四、mysql5.7 安装 (docker)(非docker)
目录 1. docker安装mysql2. centos安装mysql1. 安装centos2. 安装mysql1. docker安装mysql# 下载docker pull mysql:5.7docker images# 创建宿主机目录mkdir -p /Users/xuyy/tool/docker/mysql5.7# 运行docker run -p 3306:3306 --name mysql \-v /Users/xuyy/tool/docker/mysql5.7/conf:/原创 2020-08-09 11:57:28 · 276 阅读 · 0 评论 -
sql注入修改
in 标签 $ 修改为#原语句: <if test="ids != null and ids != ''">and ID in (${ids}) </if>修改后 <if test="ids != null and ids != ''">and <foreach collection="cdt.ids" index="index" item="item" open="(" separator="," close=")"> .原创 2020-07-31 22:27:04 · 1604 阅读 · 0 评论 -
二、docker安装mysql:5.7
docker拉取mysql:5.7镜像docker pull mysql:5.7查看镜像是否拉取成功docker image ls启动mysql:5.7# $PWD/data:/var/lib/mysql 命令执行所在目录+data映射docker机器目录docker run -d --name mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7进入my.原创 2020-07-12 09:22:02 · 181 阅读 · 0 评论 -
Mysql索引使用、索引优化(二)
目录 一、什么情况下适合使用索引?二、 什么情况下不适合使用索引?三、什么情况下索引失效?一、什么情况下适合使用索引?字段的数值有唯一性的限制,比如用户名,可以用唯一索引或者主键索引频繁作为 WHERE 查询条件的字段,尤其在数据表大的情况下需要经常 GROUP BY 和 ORDER BY 的列索引就是让数据按照某种顺序进行存储或检索,因此当我们使用 GROUP BY 对数据进行分组查询,或者使用 ORDER BY 对数据进行排序的时候,就需要对分组或者排序的字段进行索引。如果我们需要对不同原创 2020-06-09 09:31:27 · 300 阅读 · 0 评论 -
mysql索引的种类(一)
什么情况下不适合使用索引在数据表中的数据行数比较少的情况下,比如不到 1000 行,是不需要创建索引的当数据重复度大,比如高于 10% 的时候,也不需要对这个字段使用索引如果是性别这个字段,就不需要对它创建索引。这是为什么呢?如果你想要在 100 万行数据中查找其中的 50 万行(比如性别为男的数据),一旦创建了索引,你需要先访问 50 万次索引,然后再访问 50 万次数据表,这样加起来的开销比不使用索引可能还要大索引的种类功能逻辑划分:普通索引,普通索引是基础的索引,没有任何约..原创 2020-06-05 10:54:10 · 220 阅读 · 0 评论 -
es使用 项目中遇到的问题
目录 一、磁盘满了,报错 read-only / allow delete一、磁盘满了,报错 read-only / allow deleteBy default, Elasticsearch installed with homebrew on Mac OS goes into read-only mode when you have less than 5% of free disk space. If you see errors similar to this: [403] {"error原创 2020-05-29 14:59:28 · 570 阅读 · 0 评论 -
mysql 快速删除大表 count in exists区别 (四)
目录 一、收缩表空间二、怎么删除表四、快速删除大表三、count(*) count(1) count(id) count(列名)效率一、收缩表空间mysql表的存储- innoDB表存储分为表结构和表数据,表结构存储在.frm结尾的文件中,表数据存储在.ibd结尾的文件中,- 可以通过innodb_file_per_table 控制,为YES,是放在系统共享空间和数据词典放在一起,为NO时是分开放置,5.6.6版本默认为NO.这里建议分开放置,放在独立表空间,我们删除表数据时可以直接删除.ibd原创 2020-05-28 16:56:03 · 677 阅读 · 0 评论 -
mysql 优化索引 过程 explain profiling optimizer_trace(三)
首先拿到执行的sql语句,使用myslq自带的explain命令,使用explain 查看执行计划,explain select * from cc_ci where id = '200000000140094' 或 以json格式显示explain format=json select * from cc_ci where id = '200000000140094' { "query_block": { "select_id": 1, "cost_info.原创 2020-05-25 15:36:18 · 269 阅读 · 0 评论