MySQL
文章平均质量分 77
~
dreamer'~
没有梦想的小孩~
越努力,越幸运! 以现在大多数人的努力程度之低,根本轮不到可以拼天赋...
展开
-
MySQL中 LBCC 和 MVCC 的理解,常见问题及示例:
MySQL中的 LBCC 和 MVCC 的理解:原创 2022-09-08 19:30:18 · 1957 阅读 · 0 评论 -
Innodb引擎中B+树一般有几层?能容纳多少数据量?
参考:先说结论:一般B+树高大约为1~3层(最多与磁盘交换3次数据),可容纳记录数约2000w条在MySQL中我们的InnoDB页的大小默认是16k,当然也可以通过参数设置。在查找数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1~3次IO操作即可查找到数据。1、MySQL的InnoDB存储引擎的最小存储单元是页(大小默认是16k,可通过参数设置)。页可用于存放B+树叶节点数据,也可用于存放B+树非叶节点的“键+指针”2、索引组织表通过非叶节点的“二分查找”法.........原创 2022-04-22 16:40:17 · 11305 阅读 · 9 评论 -
MySQL慢查询日志:如何定位执行慢的sql语句
MySQL中慢查询日志,定位执行慢的sql语句原创 2022-10-31 21:29:45 · 3550 阅读 · 0 评论 -
MySQL 5.6版本新特性之Online DDL:在线变更表结构且不阻塞数据库服务
一、Online DDL 产生背景:二、DDL实现方式及原理:三、Online DDL 实现:Prepare 阶段、DDL 执行阶段、Commit 阶段四、建议:五、常见问题转载 2022-07-09 16:02:36 · 1796 阅读 · 0 评论 -
MySQL 连接池内的invalid connection
参考:Mysql连接无效(invalid connection)解决方案_dghpgyss的博客-CSDN博客mysql经典的8小时问题-wait_timeout - 简书golang mysql unexpected EOF(invalid connection) - 翔云123456 - 博客园问题产生原因:Mysql服务器默认的 “wait_timeout” 是8小时【28800秒】,也就是一个连接在8小时内没有活动,就会自动断开该连接。所以由于部分连接长时间空闲,一些实现版本中的连接池中.原创 2022-05-07 19:15:12 · 2667 阅读 · 0 评论 -
MySQL 间隙锁 gap lock
参考:间隙锁 gap lock - 简书概念:对于键值在条件范围内但并不存在的记录叫做“间隙”,InnoDB也会对这种 “间隙” 加锁,这种锁机制叫做 “间隙锁”。产生原因:间隙锁的出现主要集中在同一个事务中先delete后insert的情况下,当我们通过一个条件去删除一条已有记录时:如果参数在数据库中存在,那么这个时候产生的是普通行锁,锁住这个记录并删除,然后释放锁。 如果这条记录不存在,问题就来了:数据库会扫描索引,发现这个记录不存在,这时的delete语句获取到的就是一个间隙锁。然后数据..转载 2022-04-25 11:52:19 · 893 阅读 · 0 评论 -
MySQL按照in数组内的给定字段顺序,返回查询结果
使用格式:orderbyfield(dest_field,dest_field_value1,dest_field_value2,dest_field_value3...)注意:in(?)和field(?)数组内的指定字段值顺序可一样,可不一样,最终是按照field(?)数组内的指定字段值顺序进行排序的使用示例:select id, name, age, sex from user where name in ('user1', 'user2', 'user3') ord...原创 2022-04-19 17:37:28 · 1072 阅读 · 4 评论 -
MySQL大表变更“字段/索引“可能会引发的锁表问题
MySQL 锁表转载 2022-01-09 14:08:41 · 3444 阅读 · 0 评论 -
MySQL日志系统之redo log和bin log
mysql日志系统之redo log和bin log转载 2021-12-29 16:16:18 · 2035 阅读 · 0 评论 -
MySQL中TRUNCATE、DELETE、DROP的区别
参考:MYSQL中TRUNCATE和DELETE的区别 - 简书MYSQL中TRUNCATE和DELETE都能够清理表中的数据,但是他们有什么区别呢?我们从下面的几点来分析: 1. 条件删除 这个比较好理解,因为DELETE是可以带WHE...https://www.jianshu.com/p/ddc5b65e63af目录1. 条件删除2. 事务回滚3. 清理速度4. 高水位重置1. 条件删除这个比较好理解,因为DELETE是可以带WHERE的,所以支持条件删......转载 2021-11-23 22:21:41 · 456 阅读 · 0 评论 -
MySQL中, in和or 会走索引吗
参考:mysql or走索引吗_加了索引,mysql查询就一定会用吗?InnoDB行锁变表锁的原因可能有哪些?(待总结...)1.MySQL in 会用到索引吗?不一定,要看情况,具体是由MySQL优化器内部决定是全表扫描还是索引查找,用效率较高的一种方式。(1)针对索引字段的唯一性不高的情况下(索引的"区分度"低),优化器可能会选择全表扫描,而不是走索引。这可能是因为等值查询符合条件的记录太多了,导致了mysql认为全表扫描比用索引查找更快。 比如你对唯一性不高的字段(如性别:男/女.原创 2021-08-16 18:41:14 · 15802 阅读 · 1 评论 -
MySQL B+树相对于B树的区别及优势:
部分参考:B树和B+树的区别MySQL为什么使用树结构?文件很大,不可能全部存储在内存中,故要存储到磁盘上 索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数(为什么使用B-/+Tree,还跟磁盘存取原理有关。) 局部性原理与磁盘预读,预读的长度一般为页(page)的整倍数,(在许多操作系统中,页大小通常为4k) 数据库系统巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入,(由于节点中有两个数组,所以地址连续)。而红黑树这种节构,高度明显要原创 2021-08-12 16:19:16 · 3025 阅读 · 0 评论 -
MySQL Binlog(主从同步/数据恢复) 及 mysqldump:
MySQL主从同步、数据恢复mysqldump数据备份原创 2021-07-20 11:26:39 · 7012 阅读 · 3 评论 -
MySQL分区 介绍:
mysql分区(和水平分表功能类似):https://baijiahao.baidu.com/s?id=1642471550170501843&wfr=spider&for=pc1.简介:分区和水平分表功能类似,将一个大表的数据分割到多张小表中去,由于查询不需要全表扫描了,只需要扫描某些分区,所以分区能提高查询速度.分区是根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每.转载 2021-07-06 16:06:02 · 340 阅读 · 0 评论 -
MySQL单表数据不要超过500万行?真的假的?
今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个说法:MySQL 单表数据量大于 2000 万行,性能会明显下降。事实上,这个传闻据说最早起源于百度。具体情况大概是这样的,当年的 DBA 测试 MySQL性能时发现,当单表的量在 2000 万行量级的时候,SQL 操作的性能急剧下降,因此,结论由此而来。然后又据说百度的工程师流动到业界的其.转载 2021-06-07 11:01:19 · 1214 阅读 · 0 评论 -
怎么实现在海量分库分表数据中进行分页查询
怎么实现在海量分库分表数据中进行分页查询?转载 2021-04-23 15:17:50 · 1908 阅读 · 0 评论 -
优化索引,避免回表查询
首先先看一篇网上关于《回表及索引覆盖》介绍的文章,讲的很清楚:mysql覆盖索引与回表1.异地登录查询sql:SELECTuuid,count(*)AScntFROMevents_hostlogin_202106WHEREappid=?ANDstatus=2GROUPBYuuid;2.原始索引:KEY`idx_appid_status`(`appid`,`status`),3.优化后索引:altertableevents_hostlogin_20210...原创 2021-04-23 15:10:20 · 480 阅读 · 0 评论 -
关于对MySQL的SQL_NO_CACHE的理解和用法举例
转载自大佬文章:大佬文章地址SQL_NO_CACHE的真正作用是禁止对当前查询结果做缓存,但早已经有cache的查询依然会作为结果返回给query(也就是先前已经被缓存过的查询结果,即使加了SQL_NO_CACHE,MySQL也依然会从缓存查找)mysql> select count(*) from db;+----------+| count(*) |+----------+| 158404 |+----------+1 row in set (0.05 sec) m转载 2020-12-31 13:58:52 · 1860 阅读 · 0 评论 -
mysql 导出查询结果/导入.sql文件数据/mysqldump导出表or数据
1. 将mysql生成结果导入指定文件:用mysql -e生成结果导入指定文件时 ● 若要同时显示语句本身:-v ● 若要增加查询结果行数:-vv ● 若要增加执行时间: -vvv示例:// 将mysql查询结果重定向到 test.txtmysql -h x.x.x.X -P 11320 -uroot -p'xxxxxx' -D xxx -e "SELECT a FROM b WHERE create_time > 'xxxx-xx-x...原创 2020-12-30 20:42:51 · 10299 阅读 · 0 评论 -
mysql update语句:set中使用and连接多个字段值执行更新操作
若错误把SET字段时的逗号','写为"AND",则会导致更新的值不符合预期因为原值是DepartmentId=1,想要更新的值为DepartmentId=2但错误示例中用了逻辑与(AND)操作,所以原值DepartmentId=1与SET的值通过与运算后为false,所以DepartmentId最终被更新为0:1&2=0正常情况UPDATE的SET更新多字段值时,应该用逗号','进行参数连接....原创 2020-12-21 18:24:55 · 6881 阅读 · 0 评论 -
SQL 优化极简法则,还有谁不会?(含“索引失效“情况举例)
学习托尼老师的博客,笔记如下:原文:SQL 优化极简法则,还有谁不会?法则一:只返回需要的结果(1)避免使用 SELECT * FROM法则二:确保查询使用了正确的索引(1)经常出现在 WHERE 条件中的字段建立索引-> 避免全表扫描(2)将 ORDER BY 排序的字段加入到索引中 -> 避免额外的排序操作(3)多表连接查询的关联字段建立索引->提高连接查询的性能(4)将 GROUP BY 分组操作字段加入到索引中->利用索引完成分...转载 2020-10-28 12:43:20 · 323 阅读 · 2 评论 -
sql 预编译 & 防止sql注入:
参考简书/知乎 大神回答,并截取了个人认为的重点内容:1.SQL预编译 2.数据库预编译为何能防止SQL注入一、sql预编译:数据库接受到sql语句之后,需要词法和语义解析,优化sql语句,制定执行计划。多数情况下,相同的sql语句可能只是传入参数不同(如where条件后的值不同...)。如果每次都需要经过上面的词法语义解析、语句优化、制定执行计划等,则效率就明显不行了。所以预编译的优势就体现出来了。预编译语句被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相...原创 2020-10-10 00:20:16 · 4057 阅读 · 1 评论 -
MySQL的索引是什么?怎么优化?
尚硅谷 + 优化查询效率转载 2021-05-24 13:48:10 · 586 阅读 · 3 评论