
mysql笔记
文章平均质量分 66
bag2016
这个作者很懒,什么都没留下…
展开
-
使用ShardingJDBC实现读写分离
数据库准备工作提前准备两台服务器,并且在服务器中安装MySQL,服务器的信息如下:数据库 IP 数据库版本 Master 192.168.200.200 5.7.25 Slave 192.168.200.201 5.7.25 主库配置1). 修改Mysql数据库的配置文件/etc/my.cnf在最下面增加配置:log-bin=mysql-bin #[必须]启用二进制日志server-id=200 #[必须]服务器唯一ID原创 2022-04-20 20:33:59 · 3002 阅读 · 0 评论 -
mysql读写分离
什么是读写分离?读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。一主一从MyCat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制。schema.xml配置:负责均衡的参数balance,取值有4种,具体含义如下:在一主一从模式的读写分离中,balance配置1或3都是可以完成读写分离的。server..原创 2022-04-02 17:55:55 · 755 阅读 · 0 评论 -
mysql主从复制
概述主从复制是指将主数据库的DDL和DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。MySQL主从复制的优点主要包含以下三个方面:1.主库出现问题,可以快速切换到从库提供服务。2.实现读写分离,降低主库的访问压力。3.可以在从库中执行备份,以避免备份期间影响主库服务。原理MySQL主从复制的核心就是二进制日志,具.原创 2022-04-01 21:01:28 · 958 阅读 · 0 评论 -
mysql日志
错误日志错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为mysqld.log 。查看日志位置:show variables like '%log_error%';二进制日志二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包原创 2022-04-01 20:50:23 · 981 阅读 · 0 评论 -
mysql事务原理
我们研究事务的原理,就是研究MySQL的InnoDB引擎是如何保证事务的四大特性的。而对于这四大特性,实际上分为两个部分。 其中的原子性、一致性、持久化,实际上是由InnoDB中的两份日志来保证的,一份是redo log日志,一份是undo log日志。 而持久性是通过数据库的锁,加上MVCC来保证的。redo log重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log原创 2022-04-01 16:15:20 · 878 阅读 · 0 评论 -
mysql触发器
什么是触发器?在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性, 日志记录 , 数据校验等操作 。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。语法案例通过触发器记录tb_user表的数据变更日志,将变更日志插入到日志表user_logs中, 包含insert,.原创 2022-03-31 17:37:25 · 141 阅读 · 0 评论 -
mysql存储过程
是什么?存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的存储过程思想上很简单,就是数据库SQL 语言层面的代码封装与重用。基本语法变量在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。1.系统变量系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。.原创 2022-03-31 16:32:37 · 736 阅读 · 0 评论 -
mysql视图
什么是试图?视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。语法:创建视图:create or replace view 视图名 as select语句 [with local/cascaded check option];修改视图:create or replace v原创 2022-03-31 10:38:55 · 762 阅读 · 0 评论 -
sql优化
insert:如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。1.批量插入数据Insert into tb_test values(1,'Tom'),(2,'Cat'),(3,'Jerry');2.手动控制事务3.主键顺序插入,性能要高于乱序插入。大批量插入数据:如果一次性需要插入大批量数据(比如: 几百万的记录),使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下:主键优化:1.满..原创 2022-03-31 09:20:25 · 142 阅读 · 0 评论 -
mysql索引
什么是索引?索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。mysql支持的索引结构:不同存储引擎对于索引的支持:B+Tree :绿色框框起来的部分,是索引部分,仅仅起到索引数据的作用,不存储数据。红色框框起来的部分,是数据存储部分,在其叶子节点中要存储具体的数据。MySQ...原创 2022-03-31 08:56:34 · 190 阅读 · 0 评论 -
mysql存储引擎
mysql体系结构:1.连接层主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2.服务层主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表原创 2022-03-29 09:24:49 · 310 阅读 · 0 评论 -
mysql事务
什么是事务?事务是一组操作的集合,被事务管理的这些操作要么同时成功,要么同时失败。开启事务的两种方式:1.设置事务提交方式为手动提交:set @@autocommit = 0;-- 张三给李四转账1000元-- 1.查询张三账户时候大于1000元select money from account where name = '张三';-- 2.张三账户-1000元update account set money = money - 1000 where name = '张三';原创 2022-03-29 08:24:46 · 324 阅读 · 0 评论 -
mysql多表查询
内连接查询:定义:只查询交集隐式内连接:语法:select 查询字段 from 表1,表2 where 查询条件;-- 多表查询之隐式内连接select emp.name,dept.name from emp,dept where emp.dept_id=dept.id;显示内连接:语法:select 查询字段 from 表1 inner join 表2 on 查询条件;-- 多表查询之显式内连接select e.name,d.name from emp e inner原创 2022-03-28 17:55:57 · 759 阅读 · 0 评论 -
mysql字段约束
约束分类:非空约束:NOT NULL;唯一约束:UNIQUE;主键约束:PRIMARY KEY;外键约束:FORIGN KEY;默认约束:DEFAULT;检查约束:CHECK;约束演示:create table user( id int primary key auto_increment comment '主键', name varchar(10) not null unique comment '姓名', age int comment原创 2022-03-28 16:01:29 · 405 阅读 · 0 评论 -
mysql中常用的函数
字符串函数select concat('hello','mysql');将两个字符串拼接为一个字符串;select lower('HELLO');把HELLO转换为小写的hello;select upper('hello');把hello转换为大写的HELLO;select lpad('hello',10,'-');在字符串hello左侧拼接上“-”,最终输出为长度为10的字符串“-----hello”;select rpad('hello',20,'!');在字符串hello右侧拼接原创 2022-03-28 11:19:48 · 2887 阅读 · 0 评论