3
头图

MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。

MySQL 的 SQL “结构化查询语言”,SQL 是用于访问数据库的最常用标准化语言。

MySQL 软件采用了 GPL( GNU 通用公共许可证),由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。

本期技术周刊一起了解下 MySQL ,欢迎大家阅读 ~

文章推荐

《10 分钟教你写一个数据库》作者:艾小仙

今天教大家借助一款框架快速实现一个数据库,这个框架就是 Calcite,下面会带大家通过两个例子快速教会大家怎么实现,一个是可以通过 SQL 语句的方式可以直接查询文件内容,第二个是模拟 Mysql 查询功能,以及最后告诉大家怎么实现 SQL 查询 Kafka 数据。

《学习 MySQL 必须掌握的 13 个关键字,你 get 了吗?》作者:Java 架构师

三范式:

  • 第一范式:每个表的每一列都要保持它的原子性,也就是表的每一列是不可分割的;
  • 第二范式:在满足第一范式的基础上,每个表都要保持唯一性,也就是表的非主键字段完全依赖于主键字段;
  • 第三范式:在满足第一范式和第二范式的基础上,表中不能产生传递关系,要消除表中的冗余性;

《Mysql 数据库的批量插入或更新(Upsert)》作者:songofhawk

这个问题已经困扰我一段时间了,对于大量数据的插入或更新,批量操作肯定比每条记录调用一次快得多,新数据可以用 insert 批量插入,老数据可以用 replace into 批量更新。但如果不知道数据是否存在(是否有唯一 key 和数据库中已有记录重复)想在一批数据库中,插入新记录,更新老记录怎么办?

之前甚至想过封装一个函数,先用 select ... in 批量查询,然后分两组插入和更新,但一方面通用性不佳,另一方面这不是一个原子操作,对于并发的情况,有可能查询的时候记录不存在,插入的时候就已经存在了。

仔细 google 了一下,才发现这种“存在 update,不存在 insert ”的动作,有个专有名词,叫做“upsert”,相当形象。解决方案呢,不同数据库各有自己的解决方案和方言,Mysql 叫做 on duplicate key update,PostgreSql 中叫做 on confict do update。

《Mysql 45 讲关键知识》 作者:疯狂小兵

是因为 Mysql 更新数据只写到 redo 的 log 里,达到阈值后会刷脏页,占用 CPU 资源。脏页是指内存页数据和磁盘页数据不一致的情况。

发生场景

  • redolog 写满到阈值后,需将对应的内存页数据刷到磁盘上。 需要尽量避免,否则所有更新操作都会被 hang 主
  • 内存不足,刷脏页到磁盘上。常态,最需要关心的。
  • 资源空闲时,刷页。也会时不时的刷下脏页。资源空闲期刷脏页,系统不会有压力。
  • Mysql 正常关闭的时候,刷脏页到磁盘。关闭时刷脏页,正常操作,也不会关心性能。

影响性能的几种情况

  • 一次刷脏页太多。
  • 日志写满了,更新全部堵塞住。

《为什么说 MySQL 单表行数不要超过 2000w ?》作者:码猿技术专栏

作为在后端圈开车的多年老司机,是不是经常听到过,“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”,“你这个表数据都马上要到 2000w 了,难怪查询速度慢”

这些名言民语就和 “群里只讨论技术,不开车,开车速度不要超过 120 码,否则自动踢群”,只听过,没试过,哈哈。

下面我们就把车速踩到底,干到 180 码试试…….

《我操作 MySQL 的惊险一幕》作者:god23bin

情况:漏了某一个字段 X,需要将 A 表的这个字段列值更新到 B 表

条件:A 中的 id 字段的值等于 B表中的 id 字段的值 且 A 中的 name 字段的值等于 B 中 name 字段的值(条件为什么这样写?)。

条件这样写主要是因为 表和表之间的关联关系 可能有多个字段,此处只选二个字段,多个依此类推。

操作:

  • 一张表的数据插入到另一张表,可以这样写:
INSERT INTO 目标表(字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表 WHERE 条件;

问答推荐


# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。

每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。

如有问题可以添加小姐姐微信~

image.png


Beverly
882 声望2.1k 粉丝

怂人面前全是坑,努力填坑 。