随笔分类 -  MySQL

1 2 3 下一页

MySQL - varchar(N) 的N代表什么?怎么存储?
摘要:varchar(N) 的N代表什么? N代表“字符” varchar(32)表示:可以存储 32 个字符,包括中文和其他字符。 跟中英文无关,也就是该字段可以存储 32 个中文,或者是 32 个英文,或者是 32 个中文和英文的混搭都行。但如果字符数超过 32 个的话就会报错。 参考:什么是字符?什 阅读全文

posted @ 2024-04-08 14:57 frank_cui 阅读(149) 评论(0) 推荐(0) 编辑

MySQL - 字符 vs 字节
摘要:总结 在UTF-8字符集下,一个中文字符占用3个字节,一个英文字符占用1个字节。 在GBK编码下,则一个中文汉字占2个字节,英文占1个字节 字符:用输入法单独打出的任何单个的内容。对于中文和英文而言,以下内容分别都是1个字符: (1)1个中文字,例如“是” (2)1个英文字母,例如“T” (3)1个 阅读全文

posted @ 2024-04-08 14:15 frank_cui 阅读(118) 评论(0) 推荐(0) 编辑

不知不觉让数据库索引失效的“坑”
摘要:前言 提到 “数据库的查询耗时过长”, 很多情况下都与索引有关系: 或是因为索引忘记创建 或是因为SQL查询条件未满足“最左前缀原则” 以上问题的迷惑性和隐蔽性还不太强,一般都可以迅速发现root cause并拿出解决方案。 但是如果编程人员已经明确: 我已经加了所需的索引 我写的SQL也满足了所谓 阅读全文

posted @ 2024-02-29 10:58 frank_cui 阅读(21) 评论(0) 推荐(0) 编辑

MySQL - 一致性读 vs 一致性写(当前读)vs 行锁
摘要:总结 一致性读 使用“可见性规则”:https://www.processon.com/mindmap/655307fe6a2ff722ead8d9e4 一致性写(当前读) 更新数据都是先读后写的,而这个读,只能读当前的值,称为“当前读”(current read) 行锁 (两阶段锁协议) 一、问题 阅读全文

posted @ 2023-11-30 10:14 frank_cui 阅读(35) 评论(0) 推荐(0) 编辑

MySQL - 生产环境线上,如何安全地给小表加字段?
摘要:首先我们要解决长事务,事务不提交,就会一直占着 MDL 锁。在 MySQL 的 information_schema 库的 innodb_trx 表中,你可以查到当前执行中的事务。如果你要做 DDL 变更的表刚好有长事务在执行,要考虑先暂停 DDL,或者 kill 掉这个长事务。 但考虑一下这个场景 阅读全文

posted @ 2023-11-29 13:11 frank_cui 阅读(51) 评论(0) 推荐(0) 编辑

MySQL - 元数据锁MDL - 生产线上修改表结构,为何可能导致整个库崩溃?
摘要:元数据锁 MDL https://www.processon.com/mindmap/655307fe6a2ff722ead8d9e4 问题描述 给一个表加字段,或者修改字段,或者加索引,需要扫描全表的数据。在对大表操作的时候,你肯定会特别小心,以免对线上服务造成影响。而实际上,即使是小表,操作不慎 阅读全文

posted @ 2023-11-29 11:22 frank_cui 阅读(21) 评论(0) 推荐(0) 编辑

MySQL - MySQL 占用内存涨得特别快?可能原因?解决方案
摘要:https://www.processon.com/mindmap/655307fe6a2ff722ead8d9e4 阅读全文

posted @ 2023-11-14 16:14 frank_cui 阅读(58) 评论(0) 推荐(0) 编辑

MySQL - 一条SQL查询语句是如何执行的
摘要:MySQL 的逻辑架构图 详细解答 https://www.processon.com/mindmap/655307fe6a2ff722ead8d9e4 阅读全文

posted @ 2023-11-14 16:13 frank_cui 阅读(7) 评论(0) 推荐(0) 编辑

Debug - MySQL - Err 1062 duplicate entry xxxx for key xxx
摘要:可能原因1 脏数据存在 可能原因2 当你手动刷sql修改表结构时,可能这张表正有写库操作。 一边写库一边修改表结构,就会出现这种错误。。。原因未知,猜测和锁表有关系 两次错误提示: 详细的数据是不一样的....而且日期是今天的,说明不是脏数据 等待写库程序结束,再刷表就没有报错了 阅读全文

posted @ 2023-11-06 18:00 frank_cui 阅读(22) 评论(0) 推荐(0) 编辑

MySQL、HBase、ElasticSearch三者对比
摘要:TODO: http://www.ppmy.cn/news/35772.html https://www.dandelioncloud.cn/article/details/1597934023446052866 阅读全文

posted @ 2023-05-04 13:53 frank_cui 阅读(31) 评论(0) 推荐(0) 编辑

MySQL - 获取当前时间/秒级/毫秒级时间戳
摘要:总结: #当前时间戳(秒级):2020-08-08 12:09:42 select current_timestamp(); #当前时间戳(毫秒级):2020-08-08 12:09:42.192 select current_timestamp(3); # 秒级时间戳:1606371113 (自1 阅读全文

posted @ 2022-07-12 13:40 frank_cui 阅读(12927) 评论(0) 推荐(0) 编辑

MySQL - insert into V.S. replace into
摘要:总结 replace into执行过程,若碰到主键冲突,则是先删除该条记录,再插入新记录。 replace into若主键相同,主键之外字段会得到更新;若主键不同,功能同insert into replace into和insert into区别在于,insert into插入与主键相同记录会报错, 阅读全文

posted @ 2022-07-12 13:37 frank_cui 阅读(26) 评论(0) 推荐(0) 编辑

MySQL - 联合索引 和 单列索引 的区别
摘要:总结 1.当创建(a,b,c)联合索引时,相当于创建了(a)单列索引,(a,b)联合索引以及(a,b,c)联合索引想要索引生效的话,只能使用 a和a,b和a,b,c三种组合;当然,我们上面测试过,a,c组合也可以,但实际上只用到了a的索引,c并没有用到! 2.不完全总结下,单列索引更适合查询条件只有 阅读全文

posted @ 2022-07-01 10:34 frank_cui 阅读(3242) 评论(0) 推荐(0) 编辑

MySQL - 为什么索引会有“最左前缀匹配原则”?
摘要:总结 由于联合索引构建存储方式(InnoDB联合索引的数据结构是什么?)是根据第一个索引列“单调递增”排序,如果第一列相等则再根据第二列单调递增排序,依次类推。。。也就是说,对于(b,c,d)联合索引来说,相当于创建了(b)、(b、c)(b、c、d)三个索引 索引的第一列也就是b列可以说是从左到右单 阅读全文

posted @ 2021-09-19 18:29 frank_cui 阅读(830) 评论(0) 推荐(0) 编辑

MySQL - InnoDB联合索引的数据结构是什么?
摘要:总结 对于联合索引来说只不过比单值索引多了几列。 联合索引的所有索引列都出现在索引树上,并依次顺序比较几个列的大小。 InnoDB引擎会首先根据第一个索引列“单调递增”排序,如果第一列相等则再根据第二列排序,依次类推. 必看例子: 数据表T1有字段a,b,c,d,e,其中a是主键,除e为varcha 阅读全文

posted @ 2021-09-19 18:05 frank_cui 阅读(1672) 评论(0) 推荐(1) 编辑

MySQL - 为什么辅助索引的叶子节点data域存储的是主键值?
摘要:为了一致性和节省存储空间: 已经维护了一套主键索引+数据的B+Tree结构,如果再有其他的非主键索引的话,索引的叶子节点存储的是主键,这是为了节省空间,因为继续存数据的话,那就会导致一份数据存了多份,空间占用就会翻倍。 另一方面也是一致性的考虑,都通过主键索引来找到最终的数据,避免维护多份数据导致不 阅读全文

posted @ 2021-09-19 17:43 frank_cui 阅读(585) 评论(0) 推荐(0) 编辑

MySQL - 为什么InnoDB表必须有主键?并且推荐使用整型的自增主键?
摘要:在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。 为什么InnoDB表必须有主键? Mysql索引设计如此....mysql设计的就是innoDB把你的数据和主键索引用B+Tree来组织的,没有主键他的数据就没有一个结构来存储。即:主键索引就是数据文件本 阅读全文

posted @ 2021-09-19 17:28 frank_cui 阅读(825) 评论(0) 推荐(0) 编辑

MySQL - 索引中一个节点的大小是多少?两千万以内的数据需要几次IO?
摘要:总结 1.mysql对这个节点大小设置的是16K,用下面这个SQL就是可以查到 show global status like 'Innodb_page_size' 2.树的高度只有3的情况下就能存储2千多万的数据,而且mysql底层的索引他的根节点,是常驻内存的,直接就放到内存的。所以次数再减去1 阅读全文

posted @ 2021-09-19 17:12 frank_cui 阅读(2212) 评论(2) 推荐(1) 编辑

MySQL - 性能分析语句 show profile和show profiles
摘要:show profile 命令用于跟踪执行过的sql语句的资源消耗信息,可以帮助查看sql语句的执行情况,可以在做性能分析或者问题诊断的时候作为参考。 1.打开配置 show profile跟踪记录SQL执行情况的需要打开配置才能使用,如下图所示: 2.profiles命令--查看某SQL语句“所有 阅读全文

posted @ 2021-09-05 00:47 frank_cui 阅读(234) 评论(0) 推荐(0) 编辑

MySQL - 宕机时数据不丢失的原理
摘要:总结 TODO 问题 在开始阅读本文之前,可以先思考一下下面两个问题。 众所周知,MySQL 有四大特性:ACID,其中 D 指的是持久性(Durability),它的含义是 MySQL 的事务一旦提交,它对数据库的改变是永久性的,即数据不会丢失,那么 MySQL 究竟是如何实现的呢?MySQL 数 阅读全文

posted @ 2021-09-04 21:05 frank_cui 阅读(1301) 评论(1) 推荐(0) 编辑

1 2 3 下一页
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

levels of contents
点击右上角即可分享
微信分享提示