MySQL
文章平均质量分 83
mysql
xiaolyuh123
凡是过去,皆为序幕
展开
-
Mysql 脚本转换为drawio ER 脚本
Mysql SQL脚本导入drawio原创 2024-08-07 13:43:32 · 517 阅读 · 0 评论 -
MySQL 5.5、5.6、5.7的主从复制改进
最先进入队列的事务线程成为leader线程,其他后续进入的成为follower线程,leader线程将会获得这个队列的控制权,就是会获得一个锁,全权负责本次队列中所有事务的落盘操作。但如果业务始终只有一个库,或者数据库压力都集中在一个库上,其他库基本没什么操作,这样的两种情况下,针对库的多线程基本没有意义,还是和以前的单线程复制是一样的速度。在这样的模式下,从机可以同时消费主机的多个事务队列,在同一时间接收到更多的数据传输,有效降低了宕机情况下由于同步延迟导致数据丢失的概率。的落盘(保存到磁盘)效率。原创 2024-03-03 14:48:55 · 1131 阅读 · 0 评论 -
Mysql事务的两段式提交
为了满足Mysql的事物ACID特性,InnoDB引入了和 日志文件。为了满足主从同步Mysql引入了日志文件。和文件都保存的数据库对数据库的修改,但是和本质上是不一样的:当和数据不一致时就可能导致主从数据不一致,比如:为了避免这种情况,MySQL 引入了两阶段提交的机制。MySQL采用了如下的二阶段提交流程:通过机制,MySQL可以保证在任何时刻,redo log和bin log都是逻辑上一致的。如果MySQL发生崩溃,可以根据恢复数据页的状态,也可以根据恢复SQL语句的执行。原创 2024-03-03 13:49:33 · 532 阅读 · 0 评论 -
数据库分库分表中间件选择
以Sharding-Proxy为例,中间层将自身定义为透明的数据库代理,它提供了一种数据库服务器,该服务器封装了数据库二进制协议以支持异构语言。对DBA友好的是,现在提供的MySQL版本可以使用与MySQL协议兼容的任何类型的终端(例如MySQL Command Client,MySQL Workbench等)。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容JDBC和各种 ORM 框架。4、性能高,JDBC 直连数据库,无需二次转发。原创 2024-02-29 11:52:30 · 1923 阅读 · 0 评论 -
MySQL内存碎片的产生和消除方法
清理表的碎片可以提高MySQL性能,在日常工作中我们可以定期执行表碎片整理,从而提高MySQL性能。原创 2024-02-27 15:26:00 · 1114 阅读 · 0 评论 -
MySQL性能优化
MySQL性能优化主要考虑几个方面:CPU、内存、硬盘、操作系统、文件系统等。CPU数据库的应用类型一般可以分为OLTP(OnlineTransaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理。OLTP主要用来解决事务性应用,如银行交易,在线商品交易等,所以对CPU需求较低;OLAP一般需要执行复杂的SQL语...原创 2020-05-07 19:56:41 · 814 阅读 · 0 评论 -
MySQL高可用化
服务在运行过程中存在很多意外情况,如:如服务器宕机、磁盘损坏、RAID卡损坏等。如何保证数据库在服务发生意外的情况下数据不丢失呢?服务还能继续提供服务呢?我们一般通过备份的方式来解决数据丢失问题,通过复制来解决MySQL的高可用问题。备份备份的方法不同可以将备份分为:Hot Backup(热备,在线备份):在数据运行过程中进行备份,对数据库操作没有影响。Cold Backup(冷备,离...原创 2020-05-07 14:42:22 · 2017 阅读 · 1 评论 -
MySQL的日志类型
重做日志(redo log)作用重做日志用来实现事务的持久性,即事务ACID中的D。其由两部分组成:一是内存中的重做日志缓冲(redo log buffer),其是易失的;二是重做日志文件(redo log file),其是持久的。原理InnoDB是事务的存储引擎,其通过Force Log at Commit机制实现事务的持久性,即当事务提交(COMMIT)时,必须先将该事务的所有日志写入...原创 2020-05-06 18:18:30 · 780 阅读 · 0 评论 -
MySQL事务
事务是访问并更新数据库中各种数据的最小单元,在事务的操作中,要么都修改成功,要么都修改失败。它的主要目的是:将数据库从一个一直状态转换成另一种一直状态。事务的四个特性是:原子性(atomicity):原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。一致性(consistency):一致性指事务将数据库从一种状态转变为下一种一致的状态。...原创 2020-05-02 15:53:21 · 548 阅读 · 0 评论 -
MySQL索引原理
定义索引(Index)是帮助MySQL高效获取数据的数据结构。那么什么数据结构可以用来高效的获取数据呢?查看索引mysql> show index from user;+-------+------------+------------------+--------------+-------------+-----------+-------------+----------+--...原创 2020-04-23 11:00:14 · 491 阅读 · 0 评论 -
MySQL中各数据类型占用字节数
数字类型类型字节数TINYINT1 字节SMALLINT2 个字节MEDIUMINT3 个字节INT4 个字节INTEGER4 个字节BIGINT8 个字节FLOAT(X)4 如果 X < = 24 或 8 如果 25 < = X < = 53FLOAT4 个字节DOUBLE8 个字节D...原创 2020-04-22 10:01:23 · 9109 阅读 · 4 评论 -
InnoDB存储引擎
InnoDB体系架构后台线程分类Master Thread主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。Master Thread具有最高的线程优先级别。其内部由多个循环(loop)组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(suspendloop)。Master Thread会根据数据库运行的状态在loop、...原创 2020-04-21 09:21:54 · 376 阅读 · 0 评论 -
MySQL常见的存储引擎
查看存储引擎查看当前mysql所支持的所有存储引擎mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine ...原创 2020-04-20 11:36:59 · 271 阅读 · 0 评论 -
MySQL查询的执行过程
Mysql 的逻辑架构MySQL执行一个查询的过程如图:客户端发送一个查询给服务器。服务器先检查查询缓存,如果命中,则直接返回缓存中的结果。如果没有没有命中,则进入下一阶段(解析器)。服务器由解析器检查sql语法是否正确,然后由预处理器检查sql中的表和字段是否存在,最后由查询优器生成执行计划。这一步很耗资源。mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询。...原创 2020-04-20 10:00:16 · 473 阅读 · 0 评论 -
MySQL优化 - EXPLAIN
EXPLAIN是我们最常用的SQL分析工具,在使用工具之前我们需要先了解下工具中每一项代表的含义,如下是EXPLAIN中的所有列:mysql> explain select * from user u1 left join user u2 on u1.id=u2.id where u1.name='wyh';+----+-------------+-------+-----------...原创 2020-04-14 17:00:43 · 326 阅读 · 0 评论 -
Mysql 数据库压力测试工具 - MySqlSlap
MySQLSlap是从MySQL的5.1.4版引入的压力测试工具。该工具我们可以在Mysql的安装目录的bin目录里面找到,如C:\Program Files\MySQL\MySQL Server 5.7\bin>。名词解释TPS:Transactions Per Second(每秒传输的事物处理个数),这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标...原创 2020-04-11 16:56:02 · 702 阅读 · 0 评论 -
为什么表设计时必须把字段定义为NOT NULL并设默认值
空间占用的坑空’'在存储过程中是不会占用空间的,但是NULL会。就像一个杯子,空表示杯子是真空的,NULL表示装的空气。mysql> SELECT length('1'),length(NULL),length('');+-------------+--------------+------------+| length('1') | length(NULL) | length('...原创 2020-04-10 10:49:23 · 3636 阅读 · 0 评论 -
58到家MySQL军规升级版
转载 2018-03-30 58到家DBA 架构师之路一、基础规范表存储引擎必须使用InnoDB表字符集默认使用utf8,必要时候使用utf8mb4解读:通用,无乱码风险,汉字3字节,英文1字节utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它禁止使用存储过程,视图,触发器,Event解读:对数据库性能影响较大,互联网业务,能让站点层和服务层干的事情...转载 2020-04-10 09:43:51 · 314 阅读 · 0 评论 -
MYSQL MVCC 实现机制
1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用.大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使转载 2018-02-01 17:45:55 · 218 阅读 · 0 评论 -
创建高性能索引
数据库的索引,了解一下大致原理以及索引的策略差不多就行了。实际运用的时候,最好收集一下数据库的查询语句,然后根据查询频繁程度调整索引策略。索引类型通常所说的索引都是B-Tree索引,存储引擎以不同的方式使用B-Tree索引,性能各不相同,各有优劣。例如:MyISAM使用前缀压缩技术使得索引更小,但InnoDB则按照原数据格式进行存储。MyISAM索引通过数据的物理位置引用被转载 2016-11-10 15:27:38 · 374 阅读 · 0 评论 -
MySQL在以下几种情况会创建临时表
原文MySQL在以下几种情况会创建临时表:1、UNION查询;2、用到TEMPTABLE算法或者是UNION查询中的视图;3、ORDER BY和GROUP BY的子句不一样时;4、表连接中,ORDER BY的列不是驱动表中的;5、DISTINCT查询并且加上ORDER BY时;6、SQL中用到SQL_SMALL_RESULT选项时;7、FROM中的子查询;8、子查询或...转载 2016-11-22 14:55:56 · 13412 阅读 · 0 评论 -
mysql中如何执行关联查询
一、内连接1.1、SQL1.2、伪代码二、内连接2.1、SQL2.1、伪代码原创 2016-12-09 14:57:57 · 588 阅读 · 0 评论 -
查看mysql中SQL的执行计划
查看 sql语句通过数据引擎优化后的执行计划-- 关键字EXPLAIN EXTENDED-- sql语句SELECT*FROMp_user_role_refLEFT JOIN p_role ON p_role.role_id = p_user_role_ref.role_idWHERE p_user_role_ref.user_id = 1;-- 关原创 2016-12-09 15:14:04 · 1293 阅读 · 0 评论 -
MySQL的btree索引和hash索引的区别
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash转载 2016-12-09 16:00:23 · 366 阅读 · 0 评论 -
MySQL 四种事务隔离级的说明
按照SQL:1992 事务隔离级别,InnoDB默认是可重复读的(REPEATABLE READ)。MySQL/InnoDB 提供SQL标准所描述的所有四个事务隔离级别。你可以在命令行用--transaction-isolation选项,或在选项文件里,为所有连接设置默认隔离级别。例如,你可以在my.inf文件的[mysqld]节里类似如下设置该选项:transaction-isola转载 2017-02-21 10:33:13 · 320 阅读 · 0 评论 -
mysql kill process解决死锁
1、查看进程列表,找到IDshow processlist;+--------+--------+--------------------+----------+---------+------+----------+------------------+| Id | User | Host | db | Command | Tim原创 2017-03-14 16:19:33 · 44529 阅读 · 2 评论 -
Spring 配置多数据源实现数据库读写分离
现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验。我们通常的做法就是把查询从主库中抽取出来,采用多个从库,转载 2015-11-17 11:13:38 · 790 阅读 · 0 评论 -
mysql 开启允许别人访问自己本地的mysql库
报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost解决方法:1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里转载 2017-05-22 17:45:48 · 15199 阅读 · 0 评论 -
Mysql 并发引起的死锁问题(INSERT ... ON DUPLICATE KEY UPDATE 死锁)
背景:平台的某个数据库上面有近千个连接,每个连接对应一个爬虫,爬虫将爬来的数据放到cdb里供后期分析查询使用。前段时间经常出现cdb查询缓慢,cpu占有率高的现象。通过show processlist后发现,大量的连接卡在了执行INSERT ... ON DUPLICATE KEY UPDATE这样的语句上面。难道并发执行INSERT ... ON DUPLICATE KEY UPDATE会导...转载 2017-06-14 19:05:25 · 7574 阅读 · 2 评论 -
Mysql中的存储过程
什么是存储过程简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;有哪些特性有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;...转载 2017-07-26 15:01:47 · 4457 阅读 · 0 评论 -
Mysql数据库insert报慢查询
原文:http://blog.csdn.net/mchdba/article/details/77758316同事报告说有个cdb mysql实例最近很慢,写入速度巨慢,而且是间歇性的有的时候每隔7到8分钟就卡一会,有的时候每隔12分钟就卡一会,问他们是否有定时任务在拉数据?他们说没有。那是否有很多比较慢的sql把io资源消耗光了呢,去看慢查询记录,结果发现一条select都没有,反而是有...转载 2017-12-13 16:45:55 · 10655 阅读 · 0 评论 -
Docker运行Mysql实例
Docker 官网 MYsql镜像运用https://hub.docker.com/_/mysql/Docker基本命令及获取mysql镜像请参考:http://blog.csdn.net/xiaolyuh123/article/details/725288601 启动mysql实例docker run --name some-mysql -p 3306:3306 -...原创 2017-05-22 19:35:47 · 25719 阅读 · 1 评论 -
Mysql 一个字段定义成int类型,查询时传入String,会截取字符串
表定义:CREATE TABLE `ids` ( id int(11) not null auto_increment, PRIMARY KEY (id));表中存在一些IDs: 111, 112, 113, 114 等.查询:SELECT * FROM `ids` WHERE id = '112abcdefg'Msql会将sql处理...原创 2017-03-21 15:09:50 · 13731 阅读 · 0 评论