![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL知识
包小志
从今天起做个程序猿
展开
-
MyCat管理及监控——zookeeper及MyCat-web安装
注意mycat-web要与zookeeper关联,默认是关联的。这样zookeeper安装及配置就完成了。第二部: 切换目录,创建data文件夹。第三步:修改zookeeper配置文件。起动后就可以在浏览器访问mycat了。原创 2023-08-08 22:54:23 · 765 阅读 · 0 评论 -
MyCat分片规则——应用指定分片规则、日期分片、固定分片hash算法
mycat分库分表规则,及如何配置该规则。原创 2023-08-08 22:24:14 · 180 阅读 · 0 评论 -
MyCat分片规则——范围分片、取模分片、一致性hash、枚举分片
mapFile是一个映射文件,它关联的是一个外部文件。在这个文件里配置的是枚举值与分片节点。前面是枚举值,后面是数据节点的索引!默认节点指的是,如果我们向数据库表插入数据的时候,超出了这个枚举值,那么默认向哪个节点存储。默认写2意味着向第三个节点存储。范围分片和取模分片针对数字类型的字段可以,但是针对于字符串类型的字段时。原创 2023-08-08 21:58:28 · 262 阅读 · 0 评论 -
MyCat水平分表
schema.xml配置的逻辑表,在具体的数据库里面是没有的。根据id的模确定数据存在哪个节点上!原创 2023-08-07 22:39:33 · 189 阅读 · 0 评论 -
MyCat垂直分库案例以及全局表概念讲解
垂直分库的案例讲解,以及全局表是什么?怎么配置全局表?原创 2023-08-07 21:51:50 · 172 阅读 · 0 评论 -
MyCat配置rule.xml、server.xml讲解
tableRule主要配置表的分片规则,里面rule标签内主要有两个字段column(根据哪个字段进行分片)和algorithm(指的是这种分片规则对应的算法是什么)里面的内容也是一个引用。function里面的class是mycat处理分片规则所编写的java类 property标签里面配置的是这种分片规则里面所关联的属性配置。tableRule标签里面主要配置我们的分片规则,Function里面涉及的是分片规则里面所涉及的java类,都是在function中配置的。原创 2023-08-06 23:14:36 · 1082 阅读 · 0 评论 -
MyCat配置文件schema.xml讲解
schema中指定逻辑库的库名,可以配置多个table指的是逻辑表,table里面的dataNode指的是这个数据表里面分为几片,存储到哪几个数据节点当中。dataHost指的是节点主机,这个也需要在dataHost标签当中去定义,最后一个是database,它指定是当前这个数据节点关联的哪一个数据库。schema标签配置的是逻辑库逻辑表,dataNode里面配置的是数据节点,dataHost配置的是节点主机以及关联的数据源的相关信息。name指的是节点主机的唯一表示,供上层dataNode标签使用。原创 2023-08-06 22:07:12 · 1060 阅读 · 0 评论 -
MyCat启动及数据分片操作案例讲解
插入成功以后,这三条数据到底落在了哪个数据节点上了呢?是 dhost1 还是dhost2 还是 dhost3?或者说是落在ip210、还是213、还是214呢?此时我们定义的分片规则为:auto-sharding-long。这个分片规则不是自己定义的,这个分片规则是一个引用。如何查看mycat是否启动成功?三个数据节点的表结构都是一样的,因为是水平分表。在mycat中输入创建表结构的sql语句。此时mycat已经实行了数据分片操作了!那数据到底按什么进行分布的呢?在mycat中操作,插入数据。原创 2023-08-06 20:59:50 · 187 阅读 · 0 评论 -
MyCat核心概念、需求案例讲解、环境准备及分片配置
输入以下命令检查服务器防火墙状态 dead代表关闭状态,如果不关闭也可以需要开放特定的端口号!!接着需要在三台服务器上的MySQL上创建三个数据库db01。原创 2023-08-06 16:38:09 · 188 阅读 · 0 评论 -
MyCat概述
MyCat是阿里巴巴的产品,他是开源的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在。原创 2023-08-06 15:09:22 · 146 阅读 · 0 评论 -
分库分表概念、原理、拆分策略和实现技术讲解
分库分表的中心思想就是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。实现技术目前有两种,shardingJDBC、MyCat。原创 2023-08-05 12:52:42 · 273 阅读 · 0 评论 -
MySQL主从复制——概念、原理、搭建过程
另外slave中还有另外一个叫SQLthread的线程,这个SQLthread主要负责读取中继日志中的数据,然后把中继日志中所记录的数据变化,再反映到自身数据库的数据变化,从而保证主从数据库是一致的。刚才演示的主库和从库复制,它是从二进制日志的当前位置往后进行同步的,如果之前的数据也需要同步到从库中,这时就需要将主库的数据导入到一个sql文件中,然后在从库中执行此sql脚本,来保证主库和从库的初始数据是一致的。首先查看主库中的数据和从库中的数据,并在主库当中执行增删改的操作。原创 2023-08-05 00:36:09 · 1314 阅读 · 0 评论 -
MySQL日志——慢查询日志
使用log_slow_admin_statements和更改此行为log_queries_not_using_indexes,如下所述。默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。原创 2023-08-03 23:12:33 · 177 阅读 · 0 评论 -
MySQL日志——查询日志
如果开启了这个日志文件,那么这个日志文件将是很大的。查询日志里面记录的是所有的增删改查以及DDL语句。原创 2023-08-03 22:49:02 · 364 阅读 · 0 评论 -
MySQL日志——错误日志、二进制日志
在mysql配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期会自动删除。删除全部binlog日志,删除之后,日志编号将从binlog.000001重新开始。默认日志存放时间为30天,下面的单位为秒。默认的日志格式为ROW记录的每一行的数据变更。设置完配置文件后需要重启mysql服务。原创 2023-08-03 22:35:38 · 353 阅读 · 0 评论 -
MySQL系统数据库及常用工具指令介绍
mysqlimport只能导入mysqldump加-T参数导出的文本文件,不能执行sql文件。如果要导入sql文件,mysqlimport指令就不能导入了,此时要用source指令。-T自动生成两个文件:一个.sql文件,创建表结构的语句;一个txt文件,数据文件。-t表示备份不包含创建表的语句,只备份insert数据的插入语句。将db01数据库备份到db01.sql文件中。cat指令可以直接查看文本文件中的内容。不用登陆mysql直接执行脚本命令。-d表示只备份表结构不备份表数据。原创 2023-08-02 23:16:54 · 345 阅读 · 0 评论 -
InnoDB存储引擎——MVCC(多版本并发控制)介绍
当有一连串的事务进行操作时,在undo log日志当中就会生成一条记录版本的版本链。RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。在innodb引擎的表结构当中存在三个或两个隐藏字段,有没有DB_ROW_ID取决于表有没有指定主键。当前读就是读取到最新的版本记录,读取时还要保证其他事务不能修改当前记录,会对读取的记录进行加锁。快照读,select不加锁,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。快照读、当前读、MVCC的介绍。原创 2023-08-02 21:29:06 · 348 阅读 · 0 评论 -
InnoDB存储引擎——事务原理
脏页是指缓冲区的数据与磁盘中的数据不一致时的状态。脏页的数据并不是实时刷新的,而是一段时间之后通过后台线程把脏页的数据刷线到磁盘,假如说脏页的数据在往磁盘中刷新的时候出错了,内存中的数据没有刷新到磁盘当中,事务已经提交,且已经告诉用户事务已经提交成功了,但是最终在脏页刷新的时候失败了,那么这时持久性就没有得到保障。当redo log出现之后 它的流程是什么样的呢??原创 2023-08-01 23:18:31 · 233 阅读 · 0 评论 -
InnoDB引擎底层逻辑讲解——后台线程
后台线程的作用就是将innodb存储引擎缓冲池中的数据,在合适的时机刷新到磁盘文件当中。原创 2023-08-01 22:34:30 · 177 阅读 · 0 评论 -
InnoDB引擎底层逻辑讲解——架构之磁盘架构
系统表空间是change buffer(更改缓冲区)的存放区域,这是在8.0之后重新规划的,在5.x版本的时候,系统表空间还会存放innodb的数据字典undolog日志等信息,在8.0之后主要主要存放更改缓冲区的数据。如果innodb引擎当中,每一张表的独立表空间关闭着的话,那么所有的表的数据以及表的索引也是在系统表空间存储着的,那么系统表空间对应着的参数为innodb_data_file_path。通用表空间创建完成,通用表空间需要自己创建,创建表的时候需要自己去指定关联的表空间是谁。原创 2023-08-01 22:20:23 · 811 阅读 · 0 评论 -
InnoDB引擎底层逻辑讲解——架构之内存架构
下图为InnoDB架构图,左侧为内存结构,右侧为磁盘结构。原创 2023-07-29 16:52:33 · 1101 阅读 · 0 评论 -
InnoDB引擎底层逻辑讲解——逻辑存储结构
一个mysql实例中有多个表空间,我们切换到某一个特定的数据库如itcast数据库,每个ibd文件都是一个表空间,mysql数据文件存储位置(linux系统)InnoDB逻辑存储结构图。原创 2023-07-29 15:57:05 · 283 阅读 · 0 评论 -
MySQL中锁的简介——行级锁
InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁。原创 2023-07-29 15:12:49 · 278 阅读 · 0 评论 -
MySQL中锁的简介——表级锁-元数据锁、意向锁
线程B来给整张表加上表锁时,会先检查这张表的意向锁,通过意向锁来决定它能不能对这张表加锁成功,如果加的表锁和当前这张表的意向锁是兼容的,那么直接会给这张表加锁,如果当前要加的锁和这张表的意向锁不兼容,那此时线程B将会出于阻塞状态,一直阻塞到线程A将事务提交,行锁释放,意向锁释放之后,线程B将解除阻塞状态。线程A开启事务后在执行update更新语句时候,会给数据加上行锁,加上行锁以后,会对整张表加上意向锁。IS意向共享锁和表锁里面的读锁是兼容的,和表锁里面的写锁是互斥的。原创 2023-07-29 12:30:17 · 398 阅读 · 0 评论 -
MySQL中锁的简介——表级锁-表锁
读锁、写锁介绍原创 2023-07-27 22:40:11 · 295 阅读 · 0 评论 -
MySQL中锁的简介——全局锁
数据备份:mysqldump备份指令 root用户名 1234 密码 itcast数据库名称 itcast.sql备份文件名称解锁之前,数据库里的数据只能读不能写!原创 2023-07-27 22:20:32 · 306 阅读 · 0 评论 -
数据库触发器简介——修改数据的触发器、删除数据的触发器
思考下面这个触发器会触发几次?几条数据就触发几次。原创 2023-07-26 20:23:45 · 697 阅读 · 0 评论 -
数据库触发器简介——插入数据的触发器
插入数据到tb_user_insert_trigger;准备工作:日志表user_logs。原创 2023-07-26 19:56:31 · 654 阅读 · 0 评论 -
存储过程——存储函数
存储函数的弊端,必须要有返回值,能使用存储函数的地方也能使用存储过程。原创 2023-07-26 18:37:00 · 217 阅读 · 0 评论 -
存储过程——游标
SQLSTATE为sql状态码。可以用not found来代替。解决游标中如果没有数据了,跳出循环的问题。什么是游标,以及游标使用的相关语法。原创 2023-07-25 22:09:54 · 266 阅读 · 0 评论 -
存储过程——case函数、while函数、repeat函数的应用、loop函数
存储过程中,几种循环格式的语法讲解。原创 2023-07-25 20:56:28 · 170 阅读 · 0 评论 -
存储过程——if判断、存储过程中的参数使用
将传入的200分制的分数,进行换算,换算成百分制,然后返回分数---->inout。原创 2023-07-25 00:25:32 · 247 阅读 · 0 评论 -
存储过程——用户自定义变量、局部变量
在会话一定义的变量在会话二中是用不了的。使用set指令定义变量,并为变量赋值,mysql中赋值推荐使用 :=,因为在mysql中没有==这个比较运算,=也带有比较运算的功能,因此赋值运算推荐使用 :=set @mygender : = '男' ,@myhobby : = 'java';使用变量select语句赋值将指定sql查询的结果赋值给某一个变量用户定义的变量无需对其进行声明或者初始化,只不过获取到的值为null,并不会报错;原创 2023-07-24 23:33:12 · 538 阅读 · 0 评论 -
MySQL存储过程——系统变量
如果想永久的修改某个变量的值,set global也做不到,需要修改mysql的系统配置文件才行。目录在 /etc/my.cnf 中配置。这里set会话或者全局的变量,等mysql重启以后又会恢复到原来的初始值设置。关闭自动提交参数,session级别是会话级别,不会影响到其他会话的该参数。查看某一个确定的系统环境变量的值。查看会话和auto相关的变量。查看全局的和auto相关变量。查看会话级别的系统变量。原创 2023-07-23 15:51:26 · 110 阅读 · 0 评论 -
MySQL存储过程——概念及基本语法
【代码】MySQL存储过程——概念及基本语法。原创 2023-07-23 14:46:36 · 81 阅读 · 0 评论 -
MySQL视图概念及作用、操作语法
在数据库中有一些用户的敏感数据字段不方便展示,需要隐藏时,这时候就可以利用视图这个概念来实现。原创 2023-07-23 13:57:45 · 127 阅读 · 0 评论 -
SQL优化——update优化
sql优化事实上都是对索引进行优化。原创 2023-07-22 17:18:00 · 310 阅读 · 0 评论 -
SQL优化——count优化
count语句在执行的时候是比较耗费时间的这个是由存储引擎决定的。count字段是计算字段有多少不为null。count的几种用法。原创 2023-07-22 16:52:03 · 114 阅读 · 0 评论 -
SQL优化——limit优化
返回*必然是要回表的,优化的时候可以只返回id,可以覆盖索引。通过覆盖索引和子查询的方式来完成优化。执行这条sql花费了19.39s的时间。优化了近9s的时间。原创 2023-07-22 16:08:10 · 239 阅读 · 0 评论 -
SQL优化——group by优化
using temperary用到了临时表这个性能是比较低的。不满足最左前缀法则的联合索引,在分组的时候的性能分析。根据专业进行分组,并统计个数。创建索引后再执行sql。原创 2023-07-22 15:38:41 · 279 阅读 · 0 评论