关于mysql:SegmentFault-思否技术周刊-Vol70-深入-MySQL-实战

57次阅读

共计 2064 个字符,预计需要花费 6 分钟才能阅读完成。

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 条件;

问答举荐

  • MySQL 一千万的数据量如何一秒内实现含糊搜寻?
  • MySQL 语句求助?
  • MySQL 如何分组统计失败率?
  • MySQL 生产环境数据表 10 亿,不停服,想把自增 id int 改成 bigint 有什么好的方法吗?
  • 单列索引建设的程序 会不会影响查问速度?
  • MySQL 数据表新增一行记录,会不会主动按主键主动排序插入,还是会排在最初?
  • 用于解决树形构造存储的闭包表,凭什么能疾速获取某个节点的先人节点 / 父节点 / 子节点?
  • MySQL 删除数据的时候, 会不会走索引?
  • MySQL 商品销售状况统计查问特地慢, 如何优化呢?
  • MySQL 如何仅返回表面最新记录合乎顺便条件的内表记录?

# SegmentFault 技术周刊 #

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

每周二更新,欢送「关注」。大家也能够在评论处留言本人感兴趣的主题,举荐主题相干的优良文章。

如有问题能够增加小姐姐微信~

正文完
 0