mysql
文章平均质量分 61
昙花逐月
沉迷coding,无法自拔
展开
-
MySQL的10大经典错误
解决问题的思路:首先先要考虑在我们 MySQL 数据库参数文件里面,对应的,导致客户端连接数超过了数据库所承受的最大值。该值默认大小是151,我们可以根据实际情况进行调整。对应解决办法:set global max_connections=500但这样调整会有隐患,因为我们无法确认数据库是否可以承担这么大的连接压力,就好比原来一个人只能吃一个馒头,但现在却非要让他吃 10 个,他肯定接受不了。反应到服务器上面,就有可能会出现宕机的可能。所以这又反应出了,我们在新上线一个业务系统的时候,要做好压力.原创 2022-06-09 15:05:38 · 865 阅读 · 1 评论 -
centos安装mysql8.0遇到的问题
centos安装mysql遇到的问题一 提示mysql-community-libs-compat的GPG不对错误信息:warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEYRetrieving key from file:原创 2022-01-30 15:48:08 · 3172 阅读 · 0 评论 -
不得不学的Mysql优化套路
MySQL 逻辑架构如果能在头脑中构建一幅 MySQL 各组件之间如何协同工作的架构图,将有助于深入理解 MySQL 服务器。下图是 MySQL 的逻辑架构图: MySQL 逻辑架构MySQL 的逻辑架构整体分为三层,最上层为客户端层,并非 MySQL 所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。MySQL 的大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。最.原创 2021-12-09 20:36:12 · 156 阅读 · 0 评论 -
mysql执行过程以及顺序
mysql执行过程以及顺序一:mysql执行过程mysql整体的执行过程如下图所示1.1:连接器连接器的主要职责就是:①负责与客户端的通信,是半双工模式,这就意味着某一固定时刻只能由客户端向服务器请求或者服务器向客户端发送数据,而不能同时进行,其中mysql在与客户端连接TC/IP的②验证请求用户的账户和密码是否正确,如果账户和密码错误,会报错:Access denied for user ‘root’@‘localhost’ (using password: YES)③如果用户的账户和密码原创 2021-11-22 15:12:25 · 877 阅读 · 0 评论 -
高手常用的15 种 SQL 优化
一、避免使用select *很多时候,我们写SQL语句时,为了方便,喜欢直接使用select *,一次性查出表中所有列的数据。反例:select * from user where id=1;在实际业务场景中,可能我们真正需要使用的只有其中一两列。查了很多数据,但是不用,白白浪费了数据库资源,比如:内存或者cpu。此外,多查出来的数据,通过网络IO传输的过程中,也会增加数据传输的时间。还有一个最重要的问题是:select *不会走覆盖索引,会出现大量的回表操作,而从导致查询SQL的性能很低。.原创 2021-11-22 12:53:45 · 5189 阅读 · 0 评论 -
MySQL CHECK约束功能实现
CHECK 检查约束在我们使用 MySQL 插入数据时,假如我们插入性别,就只能插入‘男’、‘女’,或者插入数据控制在一定范围内,我们都会使用 CHECK 检查约束来实现。问题:MySQL 所有的存储引擎都不支持 CHECK 约束,MySQL中可以写 CHECK 约束,但会忽略它的作用,因此 CHECK 并不起作用,因此实现对数据约束有两种方法:在 MySQL 种约束,如使用 ENUM 类型 或者 触发器 。在应用程序里面对数据进行检查再插入。在这里我们主要解释第一种的 ENUM 类型或者触原创 2021-10-05 00:48:31 · 2948 阅读 · 0 评论 -
性能调优基本知识
Mysql Query Optimizer1、mysql 中有专门负责优化select语句的优化器模块,主要功能:通过计算分析中收集到的统计信息,为客户端请求的query提供它认为最有的执行计划(它认为最优的数据检索方式,但不一定是DBA认为是最优的,这部分最耗费时间)。2、当客户端向mysql请求一条query,命令解析器模块完成请求分类,区别出是select并转发给Mysql Query Optimizer时,Mysql Query Optimizer首先对整条query进行优化,处理掉一些常量表达原创 2021-10-02 05:41:59 · 116 阅读 · 0 评论 -
explain查看和分析执行计划
explain是什么使用explain关键字可以模拟优化器执行sql查询语句,从而知道mysql是如何处理你的sql语句的,分析查询语句或表结构的性能瓶颈。explain能看到什么表的读取顺序哪些数据索引可以使用数据读取操作的操作类型表之间的引用每张表有多少行被物理查询explain怎么玩explain + sql语句执行计划包含的信息id,select_type,table,partitions,type,possible_keys,key_len,ref,rows,filtered原创 2021-10-01 21:27:57 · 662 阅读 · 0 评论 -
数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”...原创 2021-09-27 11:26:50 · 86 阅读 · 0 评论 -
使用XtraBackup备份Mysql数据库
简介Percona XtraBackup 著名的开源Mysql服务器第三方备份软件,其使用物理热备份形式,在备份期间不会锁定数据库,特别适合24x7高负载服务器。Percona XtraBackup 支持Mysql 8.0服务器的InnoDB和MyIsam数据库引擎。支持完整备份、增量备份,且能非常简单的集成在shell脚本中,执行自动化备份,也可以通过管道方便的传递到另一台服务器,实为Mysql数据库备份,重放的首选利器。备注:因为Percona XtraBackup是第三方软件,可能不支持最新的M原创 2021-09-22 04:19:28 · 1259 阅读 · 0 评论 -
Mysql_Mycat全局序列
产生背景使用了mycat进行了分表后,如果还使用原来的mysql数据库自增序列(auto increment)将会造成id重复,所以,在使用了mycat进行了表数据水平切分后,数据按照一定的规则进行分布,id自增序列需要使用mycat的全局序列。全局序列的三种方式本地文件在mycat上生成一个文件,里面存放id,抗风险能力差,但凡mycat故障,备机mycat不知道文件记录的id到哪个值了。数据库方式让某个主机的数据库产生id,每次提供一个范围(比如:1 ~ 100)的序列给mycat用,使用原创 2021-09-21 05:44:33 · 326 阅读 · 0 评论 -
Mysql_Mycat分表
根据customer_id取模切分orders表的数据清除dn1上的orders、dict_order_type、orders_detail表drop table if exists orders,dict_order_type,orders_detail;vim schema.xml<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="原创 2021-09-21 03:05:37 · 193 阅读 · 0 评论 -
Mysql_Mycat分库
创建数据库分别在两台主机的数据库中创建数据库order190401(此时两台数据库是独立的,没有主从复制关系)# 在两台主机库上执行create table order190401;配置mycatvim schema.xml<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/">原创 2021-09-20 04:45:18 · 95 阅读 · 0 评论 -
Mysql_Mycat的安装
安装jdk(1.7版本以上)wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpmrpm -ivh jdk-8u131-linux-x64原创 2021-09-20 01:43:12 · 153 阅读 · 0 评论 -
Mysql_主从复制原理
复制的基本原理slave从master读取binlog来进行数据同步复制过程:master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件,binary log events;slave将master的binary log events拷贝到它的中继日志(relay log);slave重做中继日志中的事件,将改变应用到自己的数据库中,mysql的复制是异步的且串行化的。复制的基本原则每个slave只有一个master每个slave只能由一个唯一的服务器原创 2021-09-17 17:14:27 · 87 阅读 · 0 评论 -
Mysql_全局查询日志
永远不要在生产环境开启这个功能配置启用# 在mysql的my.cnf中,设置:general_log=1general_log_file=/path/logfilelog_output=FILE # 输出到文件编码启用set global general_log=1;set global general_log_output='TABLE' --将日志输出到表-- 此后,你所编写的sql语句,将会记录到mysql库里的general_log表select * from mysql.ge原创 2021-09-17 16:12:44 · 140 阅读 · 0 评论 -
Mysql_show profile
什么是show profileshow profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优测测量。它记录了所有sql执行的详细过程。官网:https://dev.mysql.com/doc/refman/5.7/en/show-profile.html默认情况下,参数处于关闭状态,并保存最近15次的运行结果。-- 查看功能是否开启show variables like 'profiling';set profiling = on;-- sql性原创 2021-09-17 16:02:15 · 147 阅读 · 0 评论 -
Mysql_慢查询日志
慢查询日志功能show variables like 'slow_query_log';show variables like 'slow_query_log_file';show variables like 'long_query_time';--开启慢查询日志记录set global slow_query_log = on;--配置文件my.cnf中开启,需重启mysql服务[mysqld]slow_query_log=1slow_query_log_file=/var/lib/原创 2021-09-17 13:26:17 · 76 阅读 · 0 评论 -
mysql表锁、行锁分析
给表加锁、解锁lock table table1 read(write),table2 read(write),...unlock tables;查看哪些表被锁show open tables ;如何分析表锁定可以通过检查 table_locks_waited 和 table_locks_immediate 两个状态变量来分析系统上的表锁定。这两个状态变量记录了Mysql表级锁定的情况,两个变量说明如下:table_locks_immediate:产生表级锁定的次数,表示可以立即获取锁的原创 2021-09-15 01:06:51 · 526 阅读 · 0 评论 -
事务的隔离级别
脏读、不可重复读、幻读,其实都是数据库读一致性问题,必须由数据库提供一定的事务隔离机制来解决。隔离级别读数据一致性脏读不可重复读幻读读未提交(Read uncommitted)最低级别,只能保证不读取物理上损坏的数据是是是读已提交 (Read committed)语句级否是是可重复读(Repeatable read)事务级否否是序列化 (Serializable)最高级别,事务级否否否数据库的事务隔离越严格,并发副作用越小,原创 2021-09-15 01:04:18 · 57 阅读 · 0 评论 -
脏读、可重复读、幻读、更新丢失
脏读一个事务正在对一条记录做修改,在这个事务完成并提交之前,这条记录的数据就处于不一致状态;这时,另一个事务也来读取同一条记录,如果不加控制,第二个事务读取了这些“脏”数据,并据此做进一步的处理,就会产生未提交的数据依赖关系。这种现象被形象地叫做“脏读”。一句话:事务A读取到了事务B已经修改但未提交的数据,还在这个数据基础上做了操作。此时,如果B事务回滚,A读取的数据无效,不符合数据一致性的要求。可重复读一个事务在读取某些数据后的某个时间,再次读取以前读过的数据,却发现其读出的数据内容已经发生改变!原创 2021-09-15 00:51:11 · 316 阅读 · 0 评论 -
事务的ACID属性
事务是由一组SQL语句组成的逻辑处理单元,事务具有一下4个属性,通常称为事务的ACID属性。原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独原创 2021-09-15 00:20:16 · 157 阅读 · 0 评论 -
mysql的in与exists优化原则
优化原则:小表驱动大表,即小的数据集驱动大的数据集。###############原理(RBO,Rule Base Optimize基于规则的优化)#################select * from A where id in (select id from B )等价于:for select id from Bfor select * from A where A.id = B.id当B表的数据集必须小于A表的数据集时,用in优于existsselect * from A w.原创 2021-09-12 16:47:13 · 646 阅读 · 0 评论 -
mysql用户权限的管理
一、查看mysql中能控制的权限show privileges;二、给用户授权grant 权限1,权限2,... on 库.* to 用户@'主机名' ;三、查看用户所拥有的权限show grants for 用户;四、收回权限revoke 权限1,权限2,... on 库.* from 用户@'主机名' ;当然,这里只介绍了用户权限控制的最简单用法,要想学习用户的权限控制的详细方法,请查看官方文档:https://dev.mysql.com/doc/refman/5.7/en/g原创 2021-09-11 23:19:10 · 74 阅读 · 0 评论 -
mysql修改密码的三种方式
一、使用set命令修改密码--修改当前用户的密码set password = password('new password');--修改其他用户的密码(需要有修改别人密码的权限,如root用户)set password for otherUser@'host' = password('new password');二、使用alter user命令修改密码alter user username identified by 'new password';三、更新mysql.user表的方式修改原创 2021-09-11 22:54:31 · 1584 阅读 · 1 评论 -
msql主从配置
一主多从创建多个实例3307 3308 3309 3310mkdir {3307..3310} # 这一步可以省略,初始化的时候,mysql会自动创建--datadir路径以下配置完成后,使用windows客户端去远程连接实例,检验实例是否都已创建成功/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/3307 --user=mysql原创 2021-09-01 19:07:02 · 137 阅读 · 0 评论 -
MYSQL安装
下载程序包cd /optwget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.34-el7-x86_64.tar.gz解压程序包tar -zxvf mysql-5.7.34-el7-x86_64.tar.gz -C /usr/localmv /usr/local/mysql-5.7.34-el7-x86_64 /usr/localmysql 官方教程shell> groupadd mysql 新建用户组原创 2021-09-01 00:58:28 · 152 阅读 · 0 评论 -
mysql忘记root密码
关闭mysql服务service mysql stop# 或者直接杀死mysql相关进程killall -9 mysqld以不检查权限的方式启动mysql;mysqld_safe --skip-grant-tables &然后用空密码方式使用root用户登录 MySQL;mysql -u root修改root用户的密码;mysql> update mysql.user set authentication_string = password('root'), pass原创 2021-09-01 00:55:50 · 83 阅读 · 0 评论