刚开始加索引想到的问题: 是否适合添加索引 我们都知道,添加索引都会降低插入和update的效率,现在由于这个是用户表所以说是数据update是不频繁的。...所以是可以加的 这个作引应该怎么加 由于每个字段的大小是256 所以说这个索引树建下来还是很浪费存储的,于是考虑前缀索引,和复合索引。...由于联合索引的是先以 前面的排序在根据后面的排序所以说将区分度高的放在前面会减少扫描行数增加查询效率 但是最重要的问题来了,我就要提交SQL的时候 leader 问了一句我,你这边的话这个数据字段 默认值为...我说是的默认值为 null(按照规定这玩意是不能null 的 应该 not null的,但是是历史数据 我这变也没改(其实这两个字段也是我之前实习的时候加的)),于是她说这样的话索引会失效, 于是我就在想为什么啊...所以说这个null值一定是加到B+ 树里面了 但是这个就会哟疑问了 索引的key值为null值在B+树是怎么存储着呢 ???
MySQL优化器索引选择迷思。 高鹏(八怪)对本文亦有贡献。 1. 问题描述 群友提出问题,表里有两个列c1、c2,分别为INT、VARCHAR类型,且分别创建了unique key。...他表示很不理解,难道不应该选择看起来代价更小的INT类型的c1列吗? 2....k2 索引,这是为什么呢?...可以看到,如果是走 c3 列索引,耗时会比走 c2 列索引多出来约 7% ~ 9%(在我的环境下测试的结果,不同环境、不同数据量可能也不同)。...看来,MySQL优化器还是有必要进一步提高的哟 :) 测试使用版本:GreatSQL 8.0.25(MySQL 5.6.39结果亦是如此)。
即使你没有参与过任何人工智能项目,也一定遇到过高斯模型,今天就让我们来看看高斯过程为什么这么受欢迎。 编译:JonyKai、元元、云舟 来源:大数据文摘(ID:BigDataDigest) ?...P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。...例如,在生产条件不变的情况下,产品的强力、抗压强度、口径、长度等指标;同一种生物体的身长、体重等指标;同一种种子的重量;测量同一物体的误差;弹着点沿某一方向的偏差;某个地区的年降水量;以及理想气体分子的速度分量...一般来说,如果一个量是由许多微小的独立随机因素影响的结果,那么就可以认为这个量具有正态分布。...▲二维空间上进行200万步的随机游走后得到的图案 中心极限定理的内容为:大量独立随机变量的和经过适当标准化之后趋近于正态分布,与这些变量原本的分布无关。比如,随机游走的总距离就趋近于正态分布。
这种"通知"的事情,一种办法是用轮询实现, 程序B不断地查数据库,看看有没有新数据的到来, 但是这种方法效率很低。...可是传统的MQ也有问题,通常情况下,一个消息确认被读取以后,就会被删除。如果来了一个新的程序C,也想读之前的消息,或者说之前一段时间的消息,传统MQ表示无能无力。...只要记录下每个程序都读到了哪个编号, 这个程序可以断开和Kafka的连接,这个程序可以崩溃,下一次就可以接着读。 新的消费者程序可以随意加入读取,不影响其他消费者程序, 是不是很爽?...例如:程序B读到了编号为3的消息, 程序C读到了编号为5的消息, 这时候来了一个新的程序D,可以从头开始读。...当然,Kafka做的远不止于此,它还充分利用硬盘顺序化读取速度快的特性,再加上分区,备份等高可用特性, 一个高吞吐量的分布式发布订阅消息系统就诞生了。
你的 SQL 语句为什么变“慢”了 在本栏第 2 篇文章《MySQL深入学习第二篇 - 一条SQL更新语句是如何执行的?》中,我为你介绍了 WAL 机制。...这就要用到 innodb_io_capacity 这个参数了,它会告诉 InnoDB 你的磁盘能力。这个值我建议你设置成磁盘的 IOPS。...而 MySQL 中的一个机制,可能让你的查询会更慢:在准备刷一个脏页的时候,如果这个数据页旁边的数据页刚好是脏页,就会把这个“邻居”也带着一起刷掉;而且这个把“邻居”拖下水的逻辑还可以继续蔓延,也就是对于每个邻居数据页...在文章里,我也给你介绍了控制刷脏页的方法和对应的监控方式。 文章最后,我给你留下一个思考题吧。...但如果你在配置的时候不慎将 redo log 设置成了 1 个 100M 的文件,会发生什么情况呢?又为什么会出现这样的情况呢?
一、前言 前几天在Python最强王者交流群【群除我佬】问了一个Pandas处理的问题,提问截图如下: 代码如下所示: songid_tags_df['tblTags'].map(lambda x :..., x) if isinstance(x,str)) 二、实现过程 后来我自己给了一个示例代码,如下所示: songid_tags_df['tblTags'].map(lambda x: re.findall..., x) if isinstance(x, str) else x) 后来【隔壁山楂】也给了一个可行的代码,如下所示: songid_tags_df['tblTags'].astype(str).str.extract...三、总结 大家好,我是皮皮。这篇文章主要盘点了一个Pandas处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【群除我佬】提问,感谢【皮皮】、【瑜亮老师】、【隔壁山楂】给出的思路和代码解析,感谢【Python进阶者】、【孤独】等人参与学习交流。
前言 前阵子参与了字节跳动后端青训营,其中大项目编写涉及到数据持久化一般选择使用MySQL。由于时间原因,数据库使用我选择了无脑三板斧:1. 建立了索引加速查询、2. 关闭自动提交事务、3....这么一看,仿佛即使是实际开发也与你此前听闻的一些MySQL相关名词:读写锁、间隙锁、多版本并发控制、redo log、bin log、undo log毫不相干,在讲本文的主题之前,我先引入一个真实场景。...或许此时你已经对于为什么多人调试程序时数据库访问不时出现卡顿有了一些自己的想法,当然这只是锁机制的冰山一角。...在这个例子当中,线程A的事务和线程B的事物分别占有id=1和id=2这两条记录的写锁,使得两个线程在试图获取其他线程占用的锁资源时陷入死锁。...至于具体读到哪个版本的快照,在上面链接给出的文章中有详细讲解。
大家好,我是皮皮。 一、前言 前几天在Python星耀群【我喜欢站在一号公路上】问了一个Python库安装的问题,一起来看看吧。...下图是他的一个报错截图: 二、实现过程 这里【对不起果丹皮】提示到上图报错上面说要你安装pep517,但是这个好像还挺难的。后来【莫生气】提示别省事,一个一个的去安装。...主要txt文件里边的库太多了,而且格式不太规则,挨个安装后,后来暂时没有发现问题。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个Python库安装的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
END; 当然了,如果触发器名不一样,执行时只会报一个错,或者drop时报not exists或者create时报already exists,但现在两个错误同时出现,问题出在哪里?...回想起来,脚本在从Oracle移植到mysql的过程中,由最初的全大写(初次创建时)改成了后来的全小写,因而出现了这个问题。...三、讨论 问题虽然得以解决,但觉得其中有问题:为什么drop trigger时大小写敏感,但create时又不再区分大小写。区别对待的原因究竟是什么?...关于MySQL的大小写敏感 由于mysql的数据库直接对应着数据目录,而表、触发器则对应着目录下的文件,因此mysql的标识符是否大小写敏感不仅与所在操作系统相关,也与是哪种对象相关。...; Unix, Linux平台,数据库名、表名、表别名、触发器名等,就要区分大小写了; 日志文件组名,又是区分大小写的,这个一般情况下没多少人关注; 变量名严格区分大小写。
问题背景 我司某客户最近在检查一批新安装的 MySQL 数据库时,发现了下面的现象: 该批次的 MySQL 客户端字符集全部为 Latin1 ; 而之前使用同样参数模板部署的 MySQL ,客户端字符集却为...utf8 ; 已知 MySQL 版本为 5.7.32 ,服务器操作系统为 Redhat 7 ,那么为什么两次安装的 MySQL 字符集会不一样呢?.../local/mysql/etc/my.cnf ~/.my.cnf shell> 排查过程 回到这个问题,我们首先检查了之前安装的 MySQL 的字符集,确实为 utf8 [qinguangfei0511...-2.png] 之后,查看服务器上所有的 my.cnf 文件,发现无论是之前安装的还是最近一批安装的,都仅有 MySQL 运行时指定的 my.cnf 文件中有字符集相关参数:character_set_server...-4.png] 好像找到了问题出在哪里,测试环境验证下,果然当服务器字符集设置为 en_US 后,MySQL 客户端字符集变为了 Latin1 [qinguangfei0511-5.png] 那么,为什么会这样呢
问题背景 我司某客户最近在检查一批新安装的 MySQL 数据库时,发现了下面的现象: 该批次的 MySQL 客户端字符集全部为 latin1 ; 而之前使用同样参数模板部署的 MySQL ,客户端字符集却为...utf8 ; 已知 MySQL 版本为 5.7.32 ,服务器操作系统为 Redhat 7 ,那么为什么两次安装的 MySQL 字符集会不一样呢?.../local/mysql/etc/my.cnf ~/.my.cnf shell> 排查过程 回到这个问题,我们首先检查了之前安装的 MySQL 的字符集,确实为 utf8 之后,查看服务器上所有的 my.cnf...文件,发现无论是之前安装的还是最近一批安装的,都仅有 MySQL 运行时指定的 my.cnf 文件中有字符集相关参数:character_set_server=utf8mb4 最后,又查看了服务器上操作系统的字符集...,为什么会这样呢,我们看下官方文档上是怎么说的:https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html#charset-connection-client-configuration
简单理解为:你执行一条sql语句,这条sql语句的执行会自动去触发执行其他的sql语句。 二、触发器的作用 可在写入数据表前,强制检验或转换数据。 触发器发生错误时,异动的结果会被撤销。...# 设置MySQL执行结束标志,默认为;2delimiter // 五、触发器的基本使用 5.1 基本使用步骤 首先,我先展示一下创建的两张表,因为创建的表很简单,这里我没有提供库表操作的SQL命令。...8.5 触发器冲突问题 触发器冲突问题其实就是关联问题。为什么这么说呢?就说以下刚才这三个案例中出现的触发器冲突问题。...仔细想想,我们将在案例中有两个是同一个表中的删除触发器。删除班级的触发器中定义的是删除班级时触发删除学生,而删除学生的触发器中定义的是班级人数减一。你发现了没,触发器被连着触发了。...由于触发器写起来比较隐蔽,容易被开发人员忽略,而且隐式调用触发器不易于排除依赖,对后期维护不是很友好! 所以在开发中,触发器是很少用到的。那为什么我还花时间大篇幅的讲解MySQL触发器呢?
所以MYSQL 用了timestamp 然后还得搭上一个触发器,然后还不一定准。...这里先说PG ,PG 要比MYSQL 方便的多,因为天生的基因,让他做这个事情,很简单。PG的行版本管理是基于system column 其中有一个字段是ctid 以下是官方文档 ?...我们可以看一下结果,为什么选择这个怪异的东西,原因是不会有人“失误”的来更改我们的checksum 字段来避免一些“人为的错误”。 ?...或许有人说,干嘛不给MYSQL 设置 default value 然后这样我就不用去insert 的时候还要带那个字段,或者在回到使用触发器之类的。...1 使用MYSQL 是为了更高的并发,使用触发器不适合我们的初衷 2 如果设置了某些默认值,并且在非单库的情况下,会有类似的error提示 ?
摘要: 本篇写的是触发器和外键约束 关键词: 触发器 | 外键约束 | 储存表链接更新 | Mysql 之所以用这个标题而没用触发器或者外键约束的原因, 1、是因为在做出这个需求之前博主是对触发器和外键约束丝毫理不清楚的...——因为同样是这波弯路 省了我触发器里一条语句,极大的提高了触发器的效率,重点是看到有文章说触发器里写select容易崩,而我又不得不写select 所以能省一笔就省一笔吧,具体怎么省的,在写完正确解决这个需求的方法后文末会提及...然后码出了如下代码 #错误示范(准确的 说是非标准示范,我Navicat运行还是可以跑的) CREATE TRIGGER test_tri AFTER INSERT ON test FOR...DELIMITER和自定义字符,顺带着衍生出了 坑②:虽然跑的通,触发器的效果也杠杠滴,但是看着 这个错误代码四个大字还是有点儿不安,不知道是解释器的问题还是什么问题,最终结果就是百般测试下没有问题才放心...文末彩蛋: 上面说的为什么外键约束省了我一大波空间?
触发器是一段与表有关的 mysql 程序,当这个表在某个时间点发生了某种事件时,将会自动执行相应的触发器程序。...何时使用触发器 当我们想要在一个表记录被更新时做一些操作时就可以说使用触发器,但是完全可以在 python 中来完成这个事情。...可以将 new 和 old 看做一个对象,其中封装了修改的数据的所有字段。 使用触发器 案例 有 cmd 表和错误日志表,需求:在 cmd 执行失败时自动将信息存储到错误日志表中。...mysql> select * from errlog; delimiter用于修改默认的行结束符,由于在触发器中有多条 sql 语句需要使用分号来结束,但是触发器是一个整体,所以需要先更换默认的结束符...原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节,事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
大家好,又见面了,我是全栈君 《MySQL技术内幕:InnoDB存储引擎》本书从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量实践,本着将书读薄的思想,循序渐进的记录对本书学习的读书笔记...当前几乎所有的关系型数据库都提供了约束(constraits)机制,该机制提供了一条强大而简易的途径来保证数据库中的数据完整性,一般来说,数据完整性有以下三种形式: (1)实体完整性保证表中有一个主键,...对错误数据的约束 在某些默认设置下,MySql数据库允许非法或不正确的数据的插入或更新,又或者可以在数据库内部将其转化为一个合法的值,如向not null的字段插入一个null值,MySql数据库会将其更改为...数据库的输入值进行了约束,而且针对不同的错误提示错误内容也不同。...下面采用触发器来约束这个逻辑行为: mysql> Create table usercash_error_log( -> userid int not null, -> old_cash
其实这里理论上来说应该是插入失败的,因为 student 有检查约束,但不同于SQL,在MYSQL中,CHECK只是一段可调用但无意义的子句。MySQL会直接忽略。...这里我删除约束的时候报错了:ERROR 1025 (HY000): Error on rename of './school/#sql-1f2_7' to '....这里我创建外键的时候 sno 中有些表有主键约束,有些却没有,所以当我删除主键约束的时候它会提示外键被错误建立起来了。但我不明白为什么建立外键的时候没有报错。...(二)触发器 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。...原因:在mysql的trigger和function中不能出现select * from table形式的查询,因为其会返回一个结果集;而这在mysql的trigger和function中是不可接受的,
zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=apache 其中有一步是安装mysql,参考我的笔记,单节点即可:https://...注意:主机名称一定要和zabbix_agentd.conf中配置的完全一样,太鸡肋 然后就发现,为什么新加入的agent状态是未知的呢 ? 经过测试,给主机增加对应的template ?...---- 服务的监控与恢复 首先我在192.168.1.4上安装了docker服务,下面我们就通过zabbix来监控docker服务的状态,若异常产生告警并自动恢复 1.创建监控项:就用自带的system.run...触发器提供了表达式构造器,可以直接使用监控项生成对应的表达式 ? 创建好后如下 ? 保存后,去将192.168.1.4上的docker服务停了就会在首页看见告警了 ?...但是这个告警会一直存在,因为服务没有自动恢复 下一步就是配置自动恢复,自动恢复在动作中配置即可 ? ? ? ?
触发器可在一个操作发生之前或之后执行,这里给出了 AFTER INSERT,所以此触发器将在 INSERT 语句成功执行后执行。这个触发器还指定FOR EACH ROW,因此代码对每个插入行执行。...未来的 MySQL 版本中有一些改进和增强触发器支持的计划。 ❑ 创建触发器可能需要特殊的安全访问权限,但是,触发器的执行是自动的。...创建保留点: savepoint delete1; 回滚到指定保留点: rollback to delete1; 保留点越多越好 可以在 MySQL 代码中设置任意多的保留点,越多越好。为什么呢?...查看日志文件 MySQL维护管理员依赖的一系列日志文件。主要的日志文件有以下几种。 ❑ 错误日志。它包含启动和关闭问题以及任意关键错误的细节。...注意,这个日志文件是 MySQL 5 中添加的,以前的 MySQL 版本中使用的是更新日志。 ❑ 缓慢查询日志。顾名思义,此日志记录执行缓慢的任何查询。这个日志在确定数据库何处需要优化很有用。
领取专属 10元无门槛券
手把手带您无忧上云