随笔分类 -  MySQL

摘要:1. sysbench https://github.com/akopytov/sysbench 在线安装 curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash 阅读全文
posted @ 2025-07-15 20:42 废物大师兄 阅读(60) 评论(0) 推荐(0)
摘要:有这样一段业务逻辑,首先保存业务数据,然后发送报文,最后确认报文回来以后更新业务数据。伪代码大概是这样的: /** * 保存数据,并调用发送报文方法 */ public void save() { // 0.保存数据 // 调用send()方法 send(); } /** * 发送报文 */ pub 阅读全文
posted @ 2024-01-30 10:35 废物大师兄 阅读(223) 评论(0) 推荐(1)
摘要:1. 基础知识回顾 1、索引的有序性,索引本身就是有序的 2、InnoDB中间隙锁的唯一目的是防止其他事务插入间隙。间隙锁可以共存。一个事务取得的间隙锁并不会阻止另一个事务取得同一间隙上的间隙锁。共享和独占间隔锁之间没有区别。它们彼此之间不冲突,并且执行相同的功能。 3、MySQL默认隔离级别是 R 阅读全文
posted @ 2023-12-20 19:26 废物大师兄 阅读(787) 评论(0) 推荐(1)
摘要:1. Performance Schema Lock Tables MySQL安装以后,我们会看到有这么两个数据库:information_schema 和 performance_schema ,它们对于排查问题是非常有用的。 Performance Schema 是一种存储引擎,默认情况下,它是 阅读全文
posted @ 2023-12-12 17:08 废物大师兄 阅读(1838) 评论(0) 推荐(0)
摘要:两个字段: pid:父级ID parent_ids:所有经过的路径节点ID 这样设计有个好处是,可以查任意节点的所有子节点,从任意节点开始既可以向上查,也可以向下查 select * from enterprise where find_in_set(4, parent_ids); 构造菜单树(Ja 阅读全文
posted @ 2023-01-19 15:19 废物大师兄 阅读(1409) 评论(0) 推荐(0)
摘要:1. 窗口函数概念和语法 窗口函数对一组查询行执行类似聚合的操作。然而,聚合操作将查询行分组到单个结果行,而窗口函数为每个查询行产生一个结果: 函数求值发生的行称为当前行 与发生函数求值的当前行相关的查询行组成了当前行的窗口 相比之下,窗口操作不会将一组查询行折叠到单个输出行。相反,它们为每一行生成 阅读全文
posted @ 2022-10-08 16:42 废物大师兄 阅读(4961) 评论(0) 推荐(2)
摘要:锁定读、UPDATE 或 DELETE 通常会给在SQL语句处理过程扫描到的每个索引记录上设置记录锁。语句中是否存在排除该行的WHERE条件并不重要。InnoDB不记得确切的WHERE条件,但只知道哪些索引范围被扫描了。锁通常是next-key锁,它也阻止插入到紧挨着记录之前的“间隙”中。然而,间隙 阅读全文
posted @ 2022-08-03 17:33 废物大师兄 阅读(757) 评论(0) 推荐(1)
摘要:重复数据如图所示 自关联,保留id最小的那一条,其它的都删除 DELETE t1 FROM invest_year t1, invest_year t2 WHERE t1.pro_id = t2.pro_id AND t1.pro_year = t2.pro_year AND t1.id > t2. 阅读全文
posted @ 2022-06-22 18:23 废物大师兄 阅读(676) 评论(0) 推荐(0)
摘要:锁定读(locking read)、更新(UPDATE)或删除(DELETE)通常会在SQL语句处理过程中扫描的每个索引记录上设置记录锁。语句中是否存在排除行的WHERE条件并不重要。InnoDB不记得确切的WHERE条件,而只知道哪个索引范围被扫描。这些锁通常是next-key锁,它还会阻止在记录 阅读全文
posted @ 2021-01-28 22:13 废物大师兄 阅读(415) 评论(0) 推荐(0)
摘要:1. Shared and Exclusive Locks shared lock (译:共享锁) exclusive lock (译:排它锁、独占锁) InnoDB实现了标准的行级锁,其中有两种类型的锁,共享锁(shared locks)和排他锁(exclusive locks)。 A share 阅读全文
posted @ 2021-01-28 09:32 废物大师兄 阅读(438) 评论(0) 推荐(0)
摘要:当同一个查询在不同的时间产生不同的行集时,就会出现所谓的幻像问题。例如,如果执行了两次SELECT,但是第二次返回了第一次没有返回的行,那么该行就是一个“幻象”行。 假设在表child的id列上有一个索引,你想读取并锁定表中标识符值大于100的所有行,并打算稍后更新所选行的某些列: SELECT * 阅读全文
posted @ 2021-01-27 22:18 废物大师兄 阅读(249) 评论(0) 推荐(0)
摘要:隔离级别是在多个事务同时进行更改和执行查询时,对性能与结果的可靠性、一致性和再现性之间的平衡进行微调的设置。 提供了SQL:1992标准中描述的四种事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。InnoDB默认 阅读全文
posted @ 2021-01-27 17:52 废物大师兄 阅读(766) 评论(1) 推荐(2)
摘要:EXPLAIN语句提供有关MySQL如何执行语句的信息。EXPLAIN与SELECT,DELETE,INSERT,REPLACE和UPDATE语句一起使用。 EXPLAIN为SELECT语句中使用的每个表返回一行信息。它按照MySQL在处理语句时读取它们的顺序列出了输出中的表。 MySQL使用嵌套循 阅读全文
posted @ 2020-12-24 18:14 废物大师兄 阅读(783) 评论(0) 推荐(2)
摘要:1. MySQL如何使用索引 索引用于快速查找具有特定列值的行。如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行。表越大,花费越多。如果表中有相关列的索引,MySQL可以快速确定要在数据文件中间查找的位置,而不必查看所有数据。这比顺序读取每一行要快得多。 大多数MySQL索引( 阅读全文
posted @ 2020-12-23 18:58 废物大师兄 阅读(931) 评论(0) 推荐(3)
摘要:以用户登录日志表为例,取用户最近登录的设备 1 SET NAMES utf8mb4; 2 SET FOREIGN_KEY_CHECKS = 0; 3 4 -- 5 -- Table structure for t_login_log 6 -- 7 DROP TABLE IF EXISTS `t_lo 阅读全文
posted @ 2019-07-04 19:40 废物大师兄 阅读(15180) 评论(5) 推荐(2)
摘要:1. 现象与问题 ORDER BY排序后,用LIMIT取前几条,发现返回的结果集的顺序与预期的不一样 下面是我遇到的问题: 可以看到,带LIMIT与不带LIMIT的结果与我预期的不一样,而且“很不可思议”,真是百思不得其解 后来百度了一下,如果order by的列有相同的值时,mysql会随机选取这 阅读全文
posted @ 2019-05-16 14:24 废物大师兄 阅读(87317) 评论(2) 推荐(17)
摘要:1. 环境 操作系统:CentOS-7 MySQL:mysql-5.6 一台虚拟机又克隆了两台 192.168.102.31 master 192.168.102.56 slave 192.168.102.36 slave 启动/停止 2. 主数据库配置 第1步:编辑/etc/my.cnf文件,在[ 阅读全文
posted @ 2018-09-26 13:52 废物大师兄 阅读(13924) 评论(0) 推荐(11)
摘要:名词解释 clustered index(聚集索引) 对(primary key)主键索引的一种表述。InnoDB表存储是基于primary key列来组织的,这样做可以加快查询和排序速度。为了获得最好的性能,在选择primary key columns的时候要特别小心。因为修改clustered 阅读全文
posted @ 2018-02-14 14:13 废物大师兄 阅读(2473) 评论(0) 推荐(1)
摘要:InnoDB是一个多版本的存储引擎:为了支持事务的一些特性诸如并发和回滚,它保持着被修改行的旧版本信息。这些信息被存储在一个被叫做“回滚段”的表空间中(跟Oracle中的回滚段类似)。InnoDB在回滚段中用这些信息来执行undo操作,以此支持事务回滚。它也用这些信息来构造行的更早的版本,以此支持一 阅读全文
posted @ 2018-01-27 17:05 废物大师兄 阅读(1812) 评论(1) 推荐(0)
摘要:回顾 在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。 读未提交:一个事务可以读取到另一个事务未提交的修改。这会带来脏读、幻读、不可重复读问题。(基本没用) 读已提交:一个事务只能读取另一个事务已经提交的修改。其避免了脏读,但仍然存 阅读全文
posted @ 2018-01-27 14:03 废物大师兄 阅读(59730) 评论(9) 推荐(50)