标签: MySQL

iron Man | 1周前 | 数据库MySQL

【前端运维】打通任督二脉!(mysql命令无废话版)

前言 本文是基于mysql 8.0。 接着 [【前端运维】打通任督二脉!(上篇)](https://www.developers.pub/article/1164879) [【前端运维】打通任督二脉!(nginx篇和nodejs + go)](https://www.developers.pub/article/1164917) ORM 有些不了解ORM的同学可以理解为,相当于用低代码搭界面,低代码是更抽象的工具去做js,html和css的事。在这里,意思是更抽象的工具去做mysql原生的事。 有人会说,我用nodejs都会使用ORM去写SQL,不用学原生SQL,这个就大错特错了,ORM工具你去它的github上看,有多少issue它是没有解决的,这种东西你不会原生SQL,出了问题首先排查非常困难,然后你发现了你难道去等人家把issue修复了才上线? 还有就是稍微复杂点的联表,ORM写出的SQL性能差 SOL语句的分类和特点 刚开始我也不重视这个分类和特点,后来学sql就学混了,感觉有了分类后更好记忆sql语句一些。 SQL语言共分为四大类:数...

 45 |  0 |  0 数据库MySQL

柚香 | 2周前 | 数据库MySQL

一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s

场景 用的数据库是mysql5.6,下面简单的介绍下场景。 课程表 create table Course( c_id int PRIMARY KEY, name varchar(10) ) 数据100条。 学生表 create table Student( id int PRIMARY KEY, name varchar(10) ) 数据70000条。 学生成绩表 CREATE table SC(     sc_id int PRIMARY KEY,        s_id int,       c_id int,       score int ) 数据70w条。 查询目的: 查找语文考100分的考生。 查询语句: select s.  from Student s where s.s_id in (       select s_id        from SC sc        where sc.c_id = 0 and sc.score = 1

 59 |  1 |  0 数据库MySQL

蔡文姬 | 2周前 | MySQL

京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?太刁钻了吧!

先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下: <span group by</span 和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于 <span group by</span 。原因是distinct 和 <span group by</span 都会进行分组操作,但 <span group by</span 可能会进行排序,触发filesort,导致sql执行效率低下。 基于这个结论,你可能会问: 为什么在语义相同,有索引的情况下, <span group by</span 和distinct效率相同? 在什么情况下, <span group by</span 会进行排序操作? 带着这两个问题找答案。接下来,我们先来看一下distinct和 <span group by</span 的基础使用。 01 distinct的使用 distinct用法 SELECT DISTINCT columns FROM table_name WHE

 62 |  0 |  0 MySQL

温酒 | 2周前 | 数据库MySQL

被问懵了:MySQL 自增主键一定是连续的吗?

测试环境: MySQL版本:8.0 数据库表:T (主键id,唯一索引c,普通字段d) 如果你的业务设计依赖于自增主键的连续性,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。 一、自增值的属性特征: 1. 自增主键值是存储在哪的? MySQL5.7版本 在 MySQL 5.7 及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值 max(id) ,然后将 max(id)+1 作为这个表当前的自增值。 MySQL8.0之后版本 在 MySQL 8.0 版本,将自增值的变更记录在了 redo log 中,重启的时候依靠 redo log 恢复重启之前的值。 可以通过看表详情查看当前自增值,以及查看表参数详情 AUTO_INCREMENT 值( AUTO_INCREMENT 就是当前数据表的自...

 76 |  0 |  0 数据库MySQL

流苏 | 2周前 | DockerMySQL

MySQL适合运行在Docker中吗?

容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以: 数据库 MySQL 是否需要容器化? 认真分析大家的各种观点,发现赞同者仅仅是从容器优势的角度来阐述 MySQL 需要容器化,几乎没有什么业务场景进行验证自己的观点;反过来再看反对者,他们从性能、数据安全等多个因素进行阐述 MySQL不需要容器化,也举证了一些不适合的业务场景。下面,我们就聊一下 Docker 不适合跑 MySQL 的 N 个原因! 数据安全问题 不要将数据储存在容器中,这也是 Docker 官方容器使用技巧中的一条。容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。为了避免数据丢失,用户可以使用数据卷挂载来存储数据。但是容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对物理机硬件损伤也比较...

 38 |  0 |  0 DockerMySQL

孤音 | 3周前 | 数据库MySQL

老大让我优化数据库,我上来就分库分表,他过来就是一jio

记得,如果有人问你做数据库优化最有效的方式是什么?SQL优化、分布式集群、分库分表!干就完了 但上来就考虑分库分表真的合适么,你对分库分表又理解多少呢?什么时候分?有几种分法儿?别想了,快上车!哈哥带你捋一下分库分表的额各种玩儿法 记得收藏 首先我们要知道分库、分表都是干啥的,本文主角还是我们的MySQL为第一视角。首先从字面意思来看: 分库:由单个数据库实例拆分成多个数据库实例,将数据分布到多个数据库实例中。 分表:由单张表拆分成多张表,将数据划分到多张表内。 要知道,对于大型互联网项目,数据量级可能不是我们能想到的,每日新增数据量过千万是常有的事儿,想靠单台MySQL服务器是不现实的。你项羽再牛B,也顶不住四个队友挂机啊!!项羽:??? 随着业务数据量和网站QPS日益增高,对数据库压力也越来越大,单机版数据库很快会到达存储和并发瓶颈,就需要做数据库性能方面的优化,分库分表采取的是分而治之的策略,分库目的是减轻单台MySQL实例存储压力及可扩展性,而分表是解决单张表数据过大以后查询的瓶颈问题,坦白说,这些问题也是所有关系型数据库的“硬伤”。 今天我们就基于常...

 59 |  0 |  0 数据库MySQL