首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL表设计踩坑!

希望我能说说我在数据库表设计时踩坑。那么,我们今天就来聊聊我在数据库表设计时踩坑,以及现在对数据库表设计一点建议。希望能够帮助到你。...注释 之前在数据库表设计时,就没有加注释习惯,造成直接后果是:数据库设计阶段一,后续数据表使用中,字段名就全靠猜了。我们写代码是知道注释是非常重要,同样在设计数据库表时,注释也非常重要!...加索引 在之前文章中也有说,一个好数据表设计,在一开始就应该考虑添加索引,这个阶段添加索引成本不仅最低。而且还不给后续留下慢查询,甚至生产事故隐患!...索引怎么加,索引重不重要,可以查看《写会MySQL索引》一文进行查看!唉,我就吃过不少没加索引或忘记添加索引亏,记忆犹新!!!...表以及字段上添加合理注释。 数据库表设计时,一定要在外键字段以及合适字段上加索引。 上面是我数据库表设计时,遇到踩坑以后经验之谈。有些坑当时还真花了不少时间来填补。

1.1K80
您找到你想要的搜索结果了吗?
是的
没有找到

使用Python过滤出类似的文本简单方法

问题 假设在存档中有成千上万文档,其中许多是彼此重复,即使文档内容相同,标题不同。现在想象一下,现在老板要求你通过删除不必要重复文档来释放一些空间。...接下来,如何实现此目标,以便在完成操作时不会删除过多文档,而保留一组唯一文档?...下面是控制流概要: 预处理所有标题文本 生成所有标题成对 测试所有对相似性 如果一对文本未能通过相似性测试,则删除其中一个文本并创建一个新文本列表 继续测试这个新相似的文本列表,直到没有类似的文本留下...一旦你这样做了,计算两条直线夹角余弦就能让你知道它们是否指向相同方向。 ? 所以,在上图中,想象一下,A线代表“闪亮橙色水果”,B线代表“闪亮红苹果是一种水果”。...可能有很多这样用例……类似于我在本文开头提到归档用例,可以使用这种方法在数据集中过滤具有惟一歌词歌曲,甚至过滤具有惟一内容类型社交媒体帖子。

1.1K30

如何快速过滤出一次请求所有日志?

华为IoT平台,提供了接收设备上报数据能力, 当数据到达平台后,平台会进行一些复杂业务逻辑处理,如数据存储,规则引擎,数据推送,命令下发等等。由于这个逻辑之间没有强耦合关系,所以通常是异步处理。...如何将一次数据上报请求中包含所有业务日志快速过滤出来,就是本文要介绍。...有了MDC工具,只要在接口或切面植入put()和remove()代码,在现网定位问题时,我们就可以通过grep requestId=xxx *.log快速滤出某次请求所有日志。...在创建MDCRunnable类时保存当前线程MDC值,在执行run()方法时再将保存MDC值拷贝到异步线程中去。...有了MDC,再通过AOP技术对所有的切面植入requestId,就可以将整个系统任意流程日志过滤出来。

1K20

mysql在开始与结束时间过滤出有效价格且结束时间可以为空

背景 在商品配置中设置有售卖时间,同一个商品可以设置多组不同售卖时间,其中开始时间必填,结束时间可以不填,但是同一时刻只会有一个正在生效时间区间。...现在要求我们针对时间进行过滤,查询出当前正在生效时间配置,和将来会生效时间配置。...分情况 要筛选出以上数据我们可以分为两种情况 1.将来生效配置:start_time > now() 2.正在生效配置:这里面根据结束时间是否设置为空我们可以分为两种情况   2.1   配置了结束时间...:start_time <= now() < end_time   2.2  没有配置结束时间:当前时间大于开始时间(可能会过滤出多组配置),在这些配置中取最大开始时间那组配置。

49610

SpringBoot 如何快速过滤出一次请求所有日志?

华为IoT平台,提供了接收设备上报数据能力, 当数据到达平台后,平台会进行一些复杂业务逻辑处理,如数据存储,规则引擎,数据推送,命令下发等等。由于这个逻辑之间没有强耦合关系,所以通常是异步处理。...如何将一次数据上报请求中包含所有业务日志快速过滤出来,就是本文要介绍。...有了MDC工具,只要在接口或切面植入put()和remove()代码,在现网定位问题时,我们就可以通过grep requestId=xxx *.log快速滤出某次请求所有日志。...在创建MDCRunnable类时保存当前线程MDC值,在执行run()方法时再将保存MDC值拷贝到异步线程中去。...有了MDC,再通过AOP技术对所有的切面植入requestId,就可以将整个系统任意流程日志过滤出来。

13100

那些年踩MySQL wait_timeout参数

MySQL wait_timeout参数修改问题,可能经常会有DBA遇到过,下面就试验一下并看看会有什么现象。...此处省略对global级 与 session级参数解释,有兴趣深入了解小伙伴请自行学习,也可以在以下操作中理解哦。 1. 修改global 级别wait_timeout; ?...此时本会话参数确实已经设置成功了,但是每次都要这么设置么?退出后再看看? ? 果然。。。。。 此时该如何是好,莫非每次都这么弄?MySQL 数据库这个参数不会真有这么蠢吧。...#长时间执行批量MYSQL语句。...、非客户端方式连接超时时间,默认是28800,就是8小时,超过这个时间,mysql服务器会主动切断那些已经连接,但是状态是sleep连接。

2K30

MySQL高级11-后台进程

一、前言   MySQL服务实现通过后台多个线程、内存池、文件交互来实现对外服务,不同线程实现不同资源操作,各个线程相互协助,共同来完成数据库服务。...MySQL常用后台线程概括如下,分为Master Thread,IO Thread,Purge Thread,Page Cleaner Thread 二、Master Thread   在MySQL中...它是MySQL Replication(MySQL复制)架构中核心组件之一。   ...SQL Thread将复制事件解析并执行相应数据更改操作,保证从库中数据与主库保持同步。   IO Thread是在MySQL启动时启动,并一直运行在后台,直到MySQL关闭。...Purge Thread是在MySQL启动时启动,并一直运行在后台,直到MySQL关闭。它会定期检查并删除不再需要二进制日志文件,以及维护二进制日志大小。

24931

坑之mysql连接报“Communications link failure”错误

前言 先给大家简述一下我坑吧,(我用mysql,至于oracle有没有这样问题,有心小伙伴们可以测试一下哈), 在自己做个javaweb测试项目的时候,因为买是云服务器,所以数据库连接是用...mysql 4.x版本可以用,如果是5以上就不行,然后就马上看了一下自己mysql版本,通过select version();看到自己mysql是5.5, ---- 第二种方法 于是就采用第二种方法...:在mysqlmy.ini里面加上这两个参数 wait_timeout=2147483 interactive_timeout=2147483 , 因为帖子里说是在默认配置不改变情况下,如果连续8...小时内都没有访问数据库操作,再次访问mysql数据库时候,mysql数据库会拒绝访问,于是那就加上吧 ?...---- 总结 网上很多教程大多数是第一种方法和第二种方法,反正我是都试过了,没有效果,可能根据mysql版本不同或者其他原因,是有用,反正我这里是没有用,最终是通过第三种方法(把jdbcURlip

115.4K43

mysql中kill掉所有锁表进程

很多时候由于异常或程序错误会导致个别进程占用大量系统资源,需要结束这些进程,通常可以使用以下命令Kill进程: mysql中kill掉所有锁表进程 2009-05-12 14:03 转载请保留如下作者信息...mysql > show processlist ;出来哗啦啦好几屏幕, 没有一千也有几百条, 查询语句把表锁住了, 赶紧找出第一个Lockedthread_id, 在mysqlshell里面执行...mysql > kill thread_id ;kill掉第一个锁表进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表进程kill掉吧, 简单脚本如下. #!...kill 66402982 ; kill 66402983 ; kill 66402986 ; kill 66402991 ; …..好了, 我们在mysqlshell...中执行, 就可以把所有锁表进程杀死了.

2.8K40

面试官:你有了解MySQL架构吗?

前言 目前大部分后端开发人员对MySQL理解可能停留在一个黑盒子阶段。 对MySQL基本使用没什么问题,比如建库、建表、建索引,执行各种增删改查。...为了解决这种知其然而不知其所以然问题,阿星重学MySQL系列会带着大家去探索MySQL底层原理方方面面。 这样大家碰到MySQL一些异常或者问题时,能够直戳本质,快速地定位解决。...连接管理 系统(客户端)访问MySQL服务器前,做第一件事就是建立TCP连接。 经过三次握手建立连接成功后,MySQL服务器对TCP传输过来账号密码做身份认证、权限获取。...这些内容我们都归纳到MySQL连接管理组件中。 所以连接管理职责是负责认证、管理连接、获取权限信息。 解析与优化 经过了连接管理,现在MySQL服务器已经获取到SQL字符串。...站在巨人肩膀上: 《MySQL实战45讲》 《从零开始带你成为MySQL实战优化高手》 《MySQL是怎样运行:从根儿上理解MySQL》 《MySQL技术Innodb存储引擎》 --

1K30

MySQL 字段为 NULL 5大坑,99%人踩

*)和count(name)值不一样,即当使用是 count(name) 查询时,就丢失了两条值为 NULL 数据。...:数据库原始数据如下:从上述图所示,mobile列10条数据都是不一样,但是查询结果却只有8条。...9和id=10name为 NULL 两条数据没有查询出来,这个结果并不符合我们正常预期。...解决方案要解决以上问题,只要修改条件,将姓名不等于Java或者是空值查出来即可,执行 SQL 如下:执行结果如下:可以看出10条数据都查询出来了,这个结果符合我们正常预期。...4.导致空指针异常当我们使用一些函数,比如求和函数sum(column) 或者平均值之类函数,如果所求字段中有空值,所求值就会为空而非0。

41440

sql_mode兼容性,MySQL 8.0 升级踩

sql_mode兼容性,MySQL 8.0 升级踩坑 前言: 1. MySQL升级8.0之后,业务访问数据库报错 2....很明显,这是一个标准基于MySQL 5.7版本开发底层框架。 2. 问题原因剖析 2.1 sql_mode历史变迁 为什么一眼就能断定这是基于MySQL 5.7版本开发框架呢?...我们在制定MySQL升级方案时就已经考虑到了sql_mode变化,在升级前检查中加入了MySQL 8.0不支持sql_mode检查。...如下图所示: 并且在升级过程过程中,配置MySQL 8.0初始参数时,将5.7运行参数与8.0参数模板进行了比对,将5.7部分参数设置合并到了MySQL 8.0参数文件。...但是,以上种种方案只能保证MySQL升级前后全局参数配置是OK;客户端连接设置会话级参数我们无法控制。这里就需要开发人员配合一起检查业务侧代码里有没有与MySQL 8.0不兼容参数设置。

4.6K10

MySql这几个坑你踩没?真是防不胜防!

一、前言 对于从事互联网开发同学来说,mysql可谓是再熟悉不过了。无论是DBA、开发或测试,基本上天天要跟它打交道,很多同学可能已经身经百战了。但是,笔者遇到过这些坑不知道你们都经历没?...二、有符号和无符号 以前我们公司在项目开发之初制定开发规范时,对mysqlint类型字段定义成有符号,还是无符号问题专门讨论过。...三、自动增长 建同学都知道,对于表主键可以定义成自动增长,这样一来,就可以交给数据库自己生成主键值,而无需在代码中指定,而且生成值是递增。...六、特殊字符 笔者之前做项目的时候,提供一个留言功能,结果客户端用户输入了一个emoji表情,直接导致接口报错了。 ?...将字符编码改成utf8mb4,utf8mb4最多能有4字节,不过,在mysql5.5.3或更高版本才支持。

78910
领券