mysql
文章平均质量分 77
岁月玲珑
厚积薄发
展开
-
【Mysql使用变量时间提取group by的第一行数据】
众所周知, 我们使用group by只能获取到分组数据, 但是有时候我们只需要获取到排序在分组最前面的一个数据即可,这时候, 常规sql就无法做到了。原创 2024-03-17 21:09:38 · 516 阅读 · 0 评论 -
Mysql和Postgresql批量生成数据
mysq不能独立运行sql片段, 所以必能通过运行函数或者存储过程方式来编程生成表数据。原创 2022-11-20 22:22:06 · 907 阅读 · 0 评论 -
mysql5.7 docker 安装
1. 拉取镜像docker pull mysql:5.72. 创建数据卷数据卷有三种模式主机卷:-v /hostpath:/var/lib/mysql命名卷docker volume create mydata-v mydata:/var/lib/myslq匿名卷-v /var/lib/mysql# 主机的映射自己生成,一个64位的名称, 例如 9f733f91350e340f59dbe3fae969ec1c9e3fbf5b772c4ff76efbf860afb1aa4f3.原创 2022-01-09 18:28:14 · 532 阅读 · 0 评论 -
【9. Mysql常见面试题(三)】
说几条 MySQL 对 SQL 的执行做的优化手段 1、对 SQL 语句的优化,MySQL 会对我们的 SQL 语句做重写,包括条件化简, 比如常量传递、除没用的条件等等;还会将一些外连接转换为内连接,然后选择 成本最低的方式执行;对 IN 子查询会进行物化、物化表转连接查询、转换为半连接等方式进行。 2、在 SQL 语句的执行过程中,MySQL 引入了索引条件下推。比如 where 后面的多个搜索条件都使用到了一个二级索引列,这些搜索条件中虽然出现了索 引列,有些却不能使用到索引,像 like原创 2021-12-18 18:17:27 · 712 阅读 · 0 评论 -
【9. Mysql常见面试题(二)】
为什么要用自增列作为主键?如果我们定义了主键(PRIMARY KEY),那么 InnoDB 会选择主键作为聚集索 引。如果没有显式定义主键,则 InnoDB 会选择第一个不包含有 NULL 值的唯一 索引作为主键索引。如果也没有这样的唯一索引,则 InnoDB 会选择内置 6 字节长的 ROWID 作为 隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个 ROWID不像ORACLE 的 ROWID 那样可引用,是隐含的)。数据记录本身被存于主索引(一颗 B+Tree)的叶子节点上,这原创 2021-12-17 23:37:15 · 1125 阅读 · 0 评论 -
【9. Mysql常见面试题(一)】
Mysql常见面试题MySQL 中有哪些存储引擎?InnoDB 存储引擎 InnoDB 是 MySQL 的默认事务型引擎,也是最重要、使用最广泛的存储引擎。 它被设计用来处理大量的短期(short-lived)事务,应该优先考虑 InnoDB 引擎。MylSAM 存储引擎 在 MySQL 5.1 及之前的版本,MyISAM 是默认的存储引擎。MyISAM 提供了 大量的特性,包括全文索引、压缩、空间函数(GIS)等,但 MyISAM 不支持事 务和行级锁,而且崩溃后无法安全恢复。MyISA原创 2021-12-16 23:38:49 · 366 阅读 · 0 评论 -
【8. MySQL 中的锁】
MySQL 中的锁 按照 MySQL 官方的说法,InnoDB 中锁可以分为: 可见,InnoDB 中锁非常多,总的来说,可以如下分类:解决并发事务问题 我们已经知道事务并发执行时可能带来的各种问题,最大的一个难点是:一 方面要最大程度地利用数据库的并发访问,另外一方面还要确保每个用户能以一 致的方式读取和修改数据,尤其是一个事务进行读取操作,另一个同时进行改动 操作的情况下。复习并发事务问题 一个事务进行读取操作,另一个进行改动操作,我们前边说过,这种情况下 可能发生脏读原创 2021-12-16 21:33:36 · 751 阅读 · 0 评论 -
【7. 事务的底层原理和 MVCC】
事务的底层原理和 MVCC 在事务的实现机制上,MySQL 采用的是 WAL(Write-ahead logging,预写式日志)机制来实现的。 在使用 WAL 的系统中,所有的修改都先被写入到日志中,然后再被应用到 系统中。通常包含 redo 和 undo 两部分信息。 为什么需要使用 WAL,然后包含 redo 和 undo 信息呢?举个例子,如果一 个系统直接将变更应用到系统状态中,那么在机器掉电重启之后系统需要知道操 作是成功了,还是只有部分成功或者是失败了(为了恢复状态)。如果使原创 2021-12-15 01:08:20 · 1233 阅读 · 1 评论 -
【6. InnoDB 引擎底层解析】
InnoDB 引擎底层解析 MySQL 对于我们来说还是一个黑盒,我们只负责使用客户端发送请求并等待 服务器返回结果,表中的数据到底存到了哪里?以什么格式存放的?MySQL 是以 什么方式来访问的这些数据?这些问题我们统统不知道。要搞明白查询优化背后 的原理,就必须深入 MySQL 的底层去一探究竟,而且事务、锁等的原理也要求 我们必须深入底层。InnoDB 记录存储结构和索引页结构 InnoDB 是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重 启我们的数据还是存在的。而真正处理数原创 2021-12-13 23:29:46 · 793 阅读 · 0 评论 -
【5. MySQL 的执行原理】
MySQL 的执行原理单表访问之索引合并(本质是主键索引的合并) 我们前边说过 MySQL 在一般情况下执行一个查询时最多只会用到单个二级 索引,但存在有特殊情况,在这些特殊情况下也可能在一个查询中使用到多个二 级索引,MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为:索引 合并/index merge,具体的索引合并算法有下边三种。Intersection 合并(交集合并) Intersection 翻译过来的意思是交集。这里是说某个查询可以使用多个二级 索引,将从多个二级索原创 2021-12-13 22:00:24 · 631 阅读 · 0 评论 -
【4. MySQL 性能优化】
MySQL 性能优化总论 MySQL 性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法: 很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的。比如硬件和 OS 调优,需要对硬件和 OS 有着非常深刻的了解,仅仅就磁盘一项来说,一般非 DBA 能想到的调整就是 SSD 盘比用机械硬盘更好,但其实它至少包括了,使用什么样的磁盘阵列(RAID)级别、是否可以分散磁盘 IO、是否使用裸设备存放数据,使用哪种文件系统(目前比较推荐的是 XFS),操作系统的磁盘调度算法(目前原创 2021-12-12 15:50:53 · 1032 阅读 · 0 评论 -
【3. 高性能索引】
高性能索引生活中的索引 MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。 图书馆的图书,字典的索引页MySql 中的索引 MySql 中的索引其实也是这么一回事,我们可以在数据库中建立一系列的索 引,比如创建主键的时候默认会创建主键索引,上图是一种 BTREE 的索引。每一 个节点都是主键的 ID InnoDB 存储引擎支持以下几种常见的索引:B+树索引、全文索引、哈希索 引,其中比较关键的是 B+原创 2021-12-11 13:51:42 · 882 阅读 · 0 评论 -
【2. 表结构设计和数据类型优化】
表结构设计和数据类型优化数据库表设计 良好的表结构设计是高性能的基石,应该根据系统将要执行的业务查询来设 计,这往往需要权衡各种因素。糟糕的表结构设计,会浪费大量的开发时间,严 重延误项目开发周期,让人痛苦万分,而且直接影响到数据库的性能,并需要花 费大量不必要的优化时间,效果往往还不怎么样。 在数据库表设计上有个很重要的设计准则,称为范式设计。范式设计什么是范式? 范式来自英文 Normal Form,简称 NF。要想设计—个好的关系,必须使关系 满足一定的约束条件,此约束已经形成原创 2021-12-09 21:31:36 · 959 阅读 · 0 评论 -
【1. MySql基础】
准备工作书籍推荐mysql必知必会mysql深入浅出mysql排错指南高性能mysql官方文档地址:https://dev.mysql.com/doc/refman/5.7/en/高性能mysqlhttps://dev.mysql.com/doc/mysql-errors/5.7/en/高性能mysql说明: 请注意,本课程的目的是培养Java架构师应该掌握的MySQL的知识,通过这些知识,旨在解决工作和面试中作为Java架构师可能会遇到的问题,比如合理的设计表结构、索引优化、SQ原创 2021-12-09 00:59:50 · 717 阅读 · 0 评论 -
Mysql8.0+CentOS8.0安装
Mysql8.0+CentOS8.0安装 由于MySQL版本不兼容原因,你需要安装MySQL5.7,而不是安装MySQL8,但是Centos8默认是安装MySQL8的,因为Centos8的AppStream仓库只包含MySQL8的包环境系统版本mysql版本:linux版本: CentOS 8操作yum安装mysql服务yum install mysql-server检查是否已经设置为开机启动MySQL服务[root@localhost ~]# systemctl list-un原创 2021-12-07 22:36:40 · 783 阅读 · 0 评论 -
mysql5.7.26安装-centos7.0
服务器上安装Mysql二进制包(非root用户)root用户的安装可以参见官网,更加简单https://dev.mysql.com/doc/refman/5.7/en/binary-installation.htmlYUM或者RPM的安装可以参考https://dev.mysql.com/doc/refman/5.7/en/linux-installation.html注意:以下安装在centos7上,mysql版本为5.7.32(在实际搭建时候发现不同版本出现的问题还是挺多的-纸上得来终觉浅,.原创 2021-12-05 22:13:46 · 285 阅读 · 0 评论 -
MySql8.0配置安装-Windows
1.home目录下新建(如果没有)my.ini====================================[mysqld]# mysqld -- mysqld is the MySQL server.# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\mysql-8.0.16-winx64# 设置mysql数据库的数据的存放目录...原创 2019-05-26 20:36:17 · 165 阅读 · 0 评论 -
新建用户报错:select command denied to user seata@localhost for table user
使用root用户查询select * from user where user='seata' and host='localhost'使用root用户更新:update user set `Select_priv` = 'Y', `Insert_priv` = 'Y', `Update_priv` = 'Y', `Delete_priv` = 'Y', `Create_priv` = 'Y', `Drop_priv` = 'Y', `Reload_priv` ...原创 2020-05-31 13:41:31 · 1882 阅读 · 0 评论