数据库技术

有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, 系统中有另外一张表 t_user_info 记录了人员信息。要求将 t_dept_members 中有变化的信息更新到 t_user 表中,这个需求就是「跨表更新」啦 憨B SQL 直接被秒杀 不带脑子出门的就写出了下面的 SQL 看到身

2022-10-27  308
数据库技术

京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。 我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。 Elasticsearch作为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据,在京东到家

2022-10-27  297
数据库技术

命名规范 1.库名、表名、字段名必须使用小写字母,并采用下划线分割。 a)MySQL有配置参数lower_case_table_names,不可动态更改,Linux系统默认为 0,即库表名以实际情况存储,大小写敏感。如果是1,以小写存储,大小写不敏感。如果是2,以实际情况存储,但以小写比较。 b)如果大小写混合使用,可能存在abc,Abc,ABC等多个表共存,容易导致混乱。 c)字段名显示区分大小写,但实际使⽤用不区分,

2022-10-27  321
数据库技术

继续回答水友提问(最近问MySQL的多): 沈老师,我在网上看到不同的资料,有的说InnoDB支持哈希索引,有的说不支持,到底哪个是正确的呢? 对于InnoDB的哈希索引,确切的应该这么说: InnoDB用户无法手动创建哈希索引,这一层上说,InnoDB确实不支持哈希索引; InnoDB会自调优(self-tuning),如果判定建立自适应哈希索引(Adaptive Hash Index, AHI),能够提升查询效率,InnoDB自

2022-10-27  269
数据库技术

继续回答星球水友提问: 沈老师,MyISAM只支持表锁,但网上文章却说,在并发插入量比较大的时候,比较适合使用MyISAM,这矛盾吗? 这个问题,涉及MySQL表锁的一些细节,借着这个问题,系统性说下表锁的“所以然”。 画外音:网上不少文章只说结论,不说为什么,容易让人蒙圈。 MySQL表锁知识系统性梳理。 哪些存储引擎使用表锁? MySQL,除InnoDB支持行锁外,MySQL的其他存储引擎均只使用表锁,例如:

2022-10-27  267
数据库技术

前言 最近利用MHA做好Mysql读写分离后,时不时有用户反馈后台发布文章时,报程序“通用异常",经问题排查,里面涉及应用JDBC连接池参数及Mysql参数调整问题。 问题回顾 异常日志描述: 从异常信息反映来看,问题关键有两点 数据库连接池超时设置大于wait_timeout 日志提示,可以通过验证数据库连接或者设置:autoReconnect=true 来避免此异常 从以上两点可以推测 第一、应用程序

2022-10-27  327
数据库技术

在前面若干章节中,我们介绍了SQL的基础与高阶语法,接下来,我们将分四个章节,介绍MySQL中常见的函数应用,大致分为如下几个章节: MySQL 字符串函数 MySQL 数字函数 MySQL 日期函数 MySQL 高级函数 本文将主要介绍MySQL 数字函数。 演示数据 我们通过创建 Student_Information表,并向该表中插入以下数据。 建表SQL语句如下: 插入SQL语句如下: 表数据如下: ABS(x

2022-10-27  292
数据库技术

首先,用过数据库的小伙伴们(本文以 MySQL InnoDB 为例)都知道,MySQL 不止有增删改数据操作(DML),还有改表结构的操作(DDL),当新增加字段等修改表结构时,就需要进行 DDL 操作。可是,如果对一个存储了上百万甚至上千上万的数据表进行 DDL 操作,数据库是怎么做到的呢?会不会有一个很大的事务锁?会不会影响数据的插入和更新?今天就会聊聊这个问题,以及 PT-OSC、GH-OST 等技术,是如何高效的解决这个问

2022-10-27  344
数据库技术

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 这个看似简单的问题实际上在 MySQL 中非常复杂。MySQL 支持许多存储引擎(其中一些根本不在磁盘上存储数据), 不同的存储数据格式。例如,InnoDB 存储引擎为 MySQL 5.7 提供了三种“基本”格式,其中包含 row_formats 和两种可

2022-10-27  294
数据库技术

原则 Docker 的使用原则是所有容器化的应用程序都应该是无状态的 ,即容器内部只跑业务逻辑,容器应用的所有配置文件、日志文件和持久化数据 都应该挂载到宿主机文件系统,不应该存储在容器内部,以免容器被误删或自身出现问题导致数据丢失。 MySQL 容器化方式 MySQL 属于有状态应用,若将其容器化需将其状态抽离到宿主机,其配置文件、日志文件和持久化数据都应该挂载到宿主机。 容器内各路径 通过docker pull 命令拉取下来的官方

2022-10-27  321