
mysql
咸鱼还是要有梦想的
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Mysql系列(十六)—Msql之学习路线
原创 2020-08-23 22:13:39 · 157 阅读 · 0 评论 -
Mysql系列(十五)—Msql之EXPLAIN
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。-- 实际SQL,查找用户名为Jefabc的员工select * from emp原创 2020-08-23 18:28:38 · 157 阅读 · 0 评论 -
Mysql系列(十四)—Msql之性能调优
性能调优此次讨论不包含数据库sql本身的调优,更多偏向环境以及参数设置,具体包含一下几个层面:选择合适的CPU 内存的重要性 硬盘对数据库性能的影响 合理的设置RAID选择合适的CPU首先要明确数据库的应用类型,一般分为两大类,OLTP(在线事务处理)、OLAP(在线分析处理)。Innodb存储引擎一般都应用于OLTP的数据库应用,这种应用的特点如下:用户操作的并发量大 事务处理的时间一般较短 查询的语句比较简单,一般都走索引 复杂查询较少可以看出OLTP本身对CPU的要求并不是原创 2020-08-23 16:58:35 · 186 阅读 · 0 评论 -
Mysql系列(十三)—Msql之备份
根据不同的类型来划分备份的方法。根据备份的方法不同可以将备份分为Hot Backup(热备) Cloud Backup(冷备) Warm Backup(温备)热备指数据库运行中直接备份,对正在运行的数据库操作没有任何影响。官方称之为在线备份(online backup).冷备是指备份操作在数据库停止的情况下,这种备份最为简单,一般只需要复制数据库相关的物理文件即可。官方称之为离线备份(offline backup)。温备同样在数据库运行中进行的,但是会对当前数据库的操作有影响,如加一个全局读锁以保原创 2020-08-23 16:23:40 · 309 阅读 · 1 评论 -
Mysql系列(十二)—Msql之事务
事务是数据库区别于文件系统的重要特性之一。事务会把数据库从一种状态变为另一种状态。在数据库提交工作时,可以确保要么所有的修改都已经保存了,要么所有修改都不保存。InnoDB存储引擎完全符合ACID的特性。ACID分别为原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability)A,原子性原子性是指整个数据库事务是不可分割的工作单位,只有使事务中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个语句的执行失败,已经执原创 2020-08-17 22:50:47 · 679 阅读 · 0 评论 -
Mysql系列(十一)—Msql之锁
锁是数据库系统区别于文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。Lock与latchlatch一般称为闩锁,又可以分为mutex(互斥量)和rwlock(读写锁)。其目的是用来保证并发线程操作临界自资源的正确性,通常没有死锁检测机制。lock的对象是事务,一般在commit或rollback之后进行释放。其是有死锁机制的。 InnoDB存储引擎中的锁锁的类型行锁分为:共享锁(S Lock)、排他锁(X Lock)。如果一个事务已经获得了行...原创 2020-08-16 18:55:42 · 184 阅读 · 0 评论 -
Mysql系列(九)—Mysql表
索引组织表在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。如果创建时没有显式的定义主键,那么会有两种策略进行主键的建立。首先判断表中是否有非空唯一索引,如果有,则该列为主键。如果有多个,则按照顺序选择第一个为主键,该处的顺序指定义索引时的顺序而不是建表时的顺序。联合索引则不会被选为主键。 如果不符合条件1,InnoDB自动创建一个6字节大小的指针。查询隐藏主键则为select _rowid from tableInnoDB逻辑存储结构从InnoDB原创 2020-08-08 15:35:42 · 269 阅读 · 0 评论 -
Mysql系列(八)—Mysql文件
mysql文件具体可以分为:参数文件 日志文件 socket文件 pid文件 Mysql表结构文件 存储引擎文件具体关系和逻辑如下: 写入重做日志的操作不是直接写,而是写入一个重做日志缓冲中,然后按照一定的条件顺序的写入日志文件。从重做日志缓冲往磁盘写入时,是按照512个字节,也就是一个扇区的大小进行写入。因为扇区是写入的最小单位,因此可以保证写入必定是成功的。因此重做日志的写入过程中不需要有doublewrite。 ...原创 2020-08-08 10:44:56 · 350 阅读 · 0 评论 -
Mysql系列(十)—Msql之InnoDB索引
InnoDB存储引擎支持以下几种常见的索引:B+树索引全文索引哈希索引这里的哈希索引是前面提到过的自适应哈希索引。为innodb自己视情况而定建立的,不能进行认为干预。B+树索引就是传统意义上的索引。注意的是B不是代表binary,而是代表balance。涉及到的数据结构和算法二分查找法二叉查找树和平衡二叉树可以看到下图的两颗都是二叉查找树,但是因为构建的方式不同。右图的二叉树查找效率就很低了。由此引出了平衡二叉树,在符合二叉查找树的基础上要求任何节点的两个子原创 2020-08-08 17:19:49 · 161 阅读 · 0 评论 -
Mysql系列(七)—Msql之InnoDB关键特性
mysql Innodb存储引擎的关键特性包括:插入缓冲 两次写 自适应哈希索引 异步IO 刷新邻接页这些特性为InnoDB存储引擎带来了好的性能和更高的可靠性。插入缓冲Insert BufferInsert Buffer和数据页一样,也是物理页的一个组成部分。在Innodb存储引擎中,主键是行唯一的标识符。通常记录是按照主键递增的顺序进行插入的。因此,插入聚集索引一般是顺序的,不需要磁盘的随机读取。这类情况的插入操作,速度是非常快的。但是并不是所有的主键插入都是顺序的原创 2020-08-02 15:55:28 · 277 阅读 · 0 评论 -
Mysql系列(六)—Msql之Checkpoint技术
一、简介思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要将缓冲池中页的新版本刷新回磁盘。因为当发生宕机时,完全可以通过重做日志来恢复整个数据库系统中的数据到宕机发生的时刻。但是这需要两个前提条件:1、缓冲池可以缓存数据库中所有的数据;2、重做日志可以无限增大因此Checkpoint(检查点)技术就诞生了,目的是解决以下几个问题:1、缩短数据库的恢复时间;2、缓冲池不够用时,将脏页刷新到磁盘;3、重做日志不可用时,刷新脏页。 当数据库发生宕机时,数据原创 2020-07-29 23:24:45 · 375 阅读 · 0 评论 -
Mysql系列(五)—Msql之Innodb体系结构
Innodb简单体系结构下图展示了 Innodb存储引擎的体系架构,Innodb存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:维护所有进程/线程需要访问的多个内部数据结构 缓存磁盘上的数据,方便快速读取,同时在对磁盘文件的数据修改之前在这里缓存 重做日志缓冲后台线程的主要工作是负责刷新内存池中的数据,保证缓冲池中的内容缓存的是最近的数据。此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下Innodb能恢复到正常运行状态。 ...原创 2020-07-27 23:48:44 · 143 阅读 · 0 评论 -
Mysql系列(四)—Mysql连接
连接mysql操作是一个连接进程和mysql数据库实例进行通信,本质上是进程通信。进程通信方式包含管道、命名管道、TCP/IP套接字、UNIX套接字。1.TCP/IP,一台服务器访问另一台服务器上的数据库实例如:mysql –h1.1.1.1 –uroot –pps:在通过TCP/IP连接到MySQL实例时,MySQL会先检查一张权限视图,用来判断发起请求的客户端IP是否允许连接到MySQL实例。该视图在mysql库下,表名为user:use mysql;select host, u原创 2020-06-24 14:08:44 · 257 阅读 · 0 评论 -
Mysql系列(三)—mysql存储引擎
mysql从5.5.8版本开始,Innodb存储引擎是默认的存储引擎,之前默认为MyISAMInnodb存储引擎支持事务 行锁设计、支持外键,支持类似于oracle的非锁定读 Innodb从4.1版本开始将每个表放到一个独立的idb文件中 Innodb支持使用裸设备来建立其表空间 Innodb使用多版本并发控制(MVCC)来提高并发性,并且实现了sql标准的4种隔离级别,默认为REPEATABLE。使用next-keylocking的策略来避免幻读的现象。此外还支持插入缓冲、二次写、自适应哈原创 2020-06-24 14:04:21 · 229 阅读 · 0 评论 -
Mysql系列(二)—Mysql SQL执行顺序
一、手写SQL顺序select <select_list>from <table_name><join_type> join <join_table> on <join_condition>where <where_condition>group by <group_by_list>having <having_condition>order by <order_by_conditio..原创 2020-06-24 14:00:33 · 235 阅读 · 0 评论 -
Mysql系列(一)—Mysql体系结构
通过上图可以看出mysql分为四层,分别为连接层、服务层、存储引擎层、存储层。连接层:连接池组件服务层:从左向右分别为:管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件存储引擎层:插件式存储引擎存储层:硬盘、物理文件 图中的NTFS/ext2/3/4等为其硬盘格式 mysql数据库区别于其他数据库的一个最重要的特点就是插件式的表存储引擎。需要特别注意的是存储引擎是基于表的,而不...原创 2020-06-24 13:56:37 · 701 阅读 · 0 评论 -
Mysql读取配置文件的顺序
Mysql读取配置文件的顺序mysql启动时依次扫描路径如下:/etc/my.cnf ->/etc/mysql/my.cnf -> /usr/local/mysql/etc/my.cnf -> ~/.my.cnf如果配置文件有多个,并且有重复的属性,则后读入的会覆盖之前的。原创 2020-06-24 13:49:42 · 297 阅读 · 0 评论 -
mysql时区错误问题
Mysql默认是美国的时区,所以要进行设置show variableslike"%time_zone%";查看时区 setglobaltime_zone ='+8:00';修改时区 flush privileges;立即生效还可以通过修改my.cnf文件来修改时区在mysql的my.cnf 文件中加入default-time_zone=’+8:00’...原创 2019-11-29 16:54:32 · 152 阅读 · 0 评论 -
mysql 5.7 离线安装教程
离线安装mysql1.检查安装rpm -qa | grep mysql --查看系统之前是否已安装MySQL。2.删除这个老版本rpm -e --nodeps mysql-libs-5.1.47-4.el6.i686 3.检查是否安装mariadb Rpm–qa | grep mariadb删除mariadb Rpm–e –node...原创 2017-12-25 11:45:43 · 5339 阅读 · 0 评论