MySQL
文章平均质量分 68
MySQL
蓝颜~岁月
重在积累。。。
展开
-
Linux下部署MySQL-MHA环境
目前的环境如下:centos7有四台虚拟机,20,21,22,2320为master,21,22,23 为20的从库,21 为管理节点。MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本 DeNA 公司的 youshimaton(现就职于 Facebook 公司)开发,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。在 MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换原创 2023-11-13 10:14:13 · 223 阅读 · 0 评论 -
Liunx 搭建MySQL集群(三)
本文讲解的是主备互备的过程。上面已经讲过主备的搭建:Liunx 搭建MySQL集群(一)Liunx 搭建MySQL集群(二)配置参数:#主备都需要新增log-slave-updates = true #将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启#主自增长IDauto_increment_offset = 1auto_increment_increment = 2 #备自增加IDauto_increment_offset = 2auto_incr原创 2022-03-06 17:30:58 · 628 阅读 · 3 评论 -
Liunx 搭建MySQL集群(二)
让我们继续 MySQL 集群搭建之旅,大部分 MySQL 的集群都是采用主主从的经典模式,这也是部署高可用集群的基础。从上文我们已经知道如果安装 MySQL ,如果没看过的可以了解一下。Liunx 搭建MySQL集群(一)现在我们的环境如下:172.16.185.161:3306 Master 节点,正在使用172.16.185.162:3306 新搭建数据库,要在上面172.16.185.161 的备库(1)创建同步用户我们创建一个用户名为 repl 的用户,授予 REPLICATION S原创 2022-03-06 16:30:59 · 921 阅读 · 0 评论 -
Liunx 搭建MySQL集群(一)
本文讲解liunx环境安装MySQL集群的第一步安装MySQL服务,如下:本来想安装一主一备两从的,本人目前机器不足哦,只准备了三台机器。望见谅。IP系统MySQL版本节点172.16.186.161Centos7.68.0主172.16.186.162Centos7.68.0备172.16.186.163Centos7.68.0从我这里默认三台机器都没安装MySQL 。如果你们有安装MySQL 的话,可以先卸载,这里就不讲解卸载的方式了,可原创 2022-03-05 16:33:08 · 1320 阅读 · 0 评论 -
MySQL存储引擎
MySQL存储引擎比较常见的引擎INNODB,MyISAM,这两种引擎对应了日常两种工作场景。第一种工作场景 联机事务处理【事务性,强一致,数据量小,高并发,实时性高,安全性高】【交易系统,支付系统】INNODB第二种工作场景 联机分析处理【弱一致性,读多写少,数据量大,实时性不高】【数据仓库,AI,机械学习】MyISAM想要知道自己的数据文件目录可执行:`show variables like '%dir%';`因为我是mac 系统,所以如下目录:MySQL数据文件目录 /usr/loc原创 2021-08-05 23:23:04 · 80 阅读 · 0 评论 -
数据库索引
数据库索引索引事加速表的查询效率而创建的数据结构。日常场景:新华字典的目录类似一个索引。索引是一个有序的结构- 有序的结构可以提高查找效率【不仅仅可以采用二分查找,可以构造多叉有序结构提高查找效率】- 无序的结构的查找需要遍历索引可以减少存储引擎的查询数据量- 索引是有序结构,避免了全表扫描- 索引列少,占用的存储量少将随机IO变成有序IO- 业务写入是无序的,从有序的结构中检索- 一般而言,无序的东西是没有价值的- 写的性能和读性能的平衡(架构),并发处理的解决方案提高分组,原创 2021-08-07 18:36:30 · 133 阅读 · 0 评论 -
MySQL体系架构
MySQL基架大致包括如下几大模块组件:MySQL向外提供的交互接口(Connectors)Connectors组件,是MySQL向外提供的交互组件,如java,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互,你也可以理解成client。管理服务组件和工具组件(Management Service & Utilities)提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等等。连接池组件(Connec原创 2021-08-04 06:55:40 · 175 阅读 · 0 评论 -
Hash索引的原理和应用
Hash表的基础结构图形生成:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html数组中有13个元素- 对元素进行分治分桶处理- 数组可以快速的通过下标定位元素链表中是向上的结构- 处理元素Hash碰撞导致的数组地址重复问题Hash算法- 计算元素在数组中的位置坐标- 常见的Hash算法-------第一步元素(字符串)Hash运算取整-------Hash整数对数组长度取余Hash索引的应用场景数组结原创 2021-08-07 18:52:32 · 251 阅读 · 0 评论 -
MySQL InnoDB加锁超时回滚机制
MySQL InnoDB加锁超时回滚机制MySQL给SQL加锁时,可以通过innodb_lock_wait_timeout参数设置超时时间,如果加锁等待超过这个时间,就会回滚,会滚的方式有两种:这两种方式是通过参数innodb_rollback_on_timeout来处理的。innodb_rollback_on_timeout等于OFF时,commit时,只会回滚当前加锁的这条语句,rollback时还是整个事物回滚的。系统默认为OFFinnodb_rollback_on_timeout等于ON时,原创 2021-08-18 18:05:19 · 835 阅读 · 0 评论 -
Mysql不同实例跨库查询数据解决方案
本章主要讲解查询不同实例跨库查询,可以参考如下:场景:不同实例连表查询。解决方案:在机器A上的数据库A中建一个表B。采用的方式:基于MySQL的federated引擎的建表前提条件:你的mysql得支持federated引擎。show engines;我是有的,因为我已经配置好了,嘿嘿!!!如果你有FEDERATED引擎的话,你还得看一下Support是什么值哦,如果是No的话,你就需要取配置一下my.cnf文件咯,在[mysqld] 最后一行加入federated 。 然后重启mysql原创 2021-08-16 21:17:03 · 1421 阅读 · 0 评论 -
MySQL 的锁机制
锁的认识锁的解释计算机协调多个进程或线程并发访问某一资源的机制。锁的重要性在数据库中,除传统计算资源(CPU、RAM、I\O等)的争抢,数据也是一种供多用户共享的资源。如何保证数据并发访问的一致性,有效性,是所有数据库必须要解决的问题。锁冲突也是影响数据库并发访问性能的一个重要因素,因此锁对数据库尤其重要。锁的缺点加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否已解除、释放锁等 ,都会增加系统的开销。简单的例子现如今网购已经特别普遍了,比如淘宝双十一活动,当天原创 2021-04-18 11:30:09 · 72 阅读 · 0 评论 -
mysql并发事物时产生的死锁?
案例:1.新建一张简单的test表,如下:2.表结构如下:3.插入三条数据数据如下:4.需要开启两个窗口先执行会话A,如下:然后执行会话B,如下:在执行会话A,如下:这个时候插入时,等待会话B 结束事物在执行会话B,如下:这个时候插入时,会话B直接报错,这个时候产生了死锁;大家明白了吗?详解:1.会话A 在删除id等于4的时候,存在间隙锁(3,8)。2.会话B 在删除id等于6的时候,存在间隙锁(3,8)。3.再次执行会话A时,添加id等于5的时候,会等待会话B释放原创 2021-04-15 22:33:35 · 207 阅读 · 0 评论 -
【MySQL】命名规范
一.数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且不要超过32个字符临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)二.数据库基本设计规范1、所转载 2021-03-07 18:49:06 · 854 阅读 · 0 评论 -
mysql百万到千万级别数据量的优化方案
百万级1. 字段选择优化表字段 not null,因为 null 值很难查询优化且占用额外的索引空间,推荐默认数字 0。数据状态类型的字段,比如 status, type 等等,尽量不要定义负数,如 -1。因为这样可以加上 UNSIGNED,数值容量就会扩大一倍。可以的话用 TINYINT、SMALLINT 等代替 INT,尽量不使用 BIGINT,因为占的空间更小。字符串类型的字段会比数字类型占的空间更大,所以尽量用整型代替字符串,很多场景是可以通过编码逻辑来实现用整型代替的。字符串类型长度原创 2021-03-04 22:37:53 · 1020 阅读 · 1 评论 -
mysql索引 B+树
索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引Hash 索引全文索引我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结构。原创 2021-03-01 21:37:59 · 100 阅读 · 0 评论 -
MySQL事务隔离级别和实现原理
MySQL 事务本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。假设一个网购付款的操作,用户付款后要涉及到订单状态更新、扣库存以及其他一系列动作,这就是一个事务,如果一切正常那就相安无事,一旦中间有某个环节异常,那整个事务就要回滚,总不能更新了订单状态但是不扣库存吧,这问题就大原创 2021-02-28 14:06:49 · 441 阅读 · 0 评论 -
SQL优化
SQL优化避免使用 select * 你需要什么信息,就查询什么信息,查询的多了,查询的速度肯定就会慢当你只需要查询出一条数据的时候,要使用 limit 1 比如你要查询数据中是否有男生,只要查询一条含有男生的记录就行了,后面不需要再查了,使用limit 1 可以在找到一条数据后停止搜索建立高性能的索引 索引不是随便加的也不是索引越多越好,更不是所有索引对查询都有效建数据库表时,给字段设置固定合适的大小. 字段不能设置的太大,设置太大就造成浪费,会使查询速度原创 2021-02-27 22:59:05 · 64 阅读 · 0 评论 -
mysql 悲观锁与乐观锁的详解
悲观锁与乐观锁是人们定义出来的概念,你可以理解为一种思想,是处理并发资源的常用手段。不要把他们与mysql中提供的锁机制(表锁,行锁,排他锁,共享锁)混为一谈。一.悲观锁就是对于数据的处理持悲观态度,总认为会发生并发冲突,获取和修改数据时,别人会修改数据。所以在整个数据处理过程中,需要将数据锁定。悲观锁的实现,通常依靠数据库提供的锁机制实现,比如mysql的排他锁,select … for update来实现悲观锁。例子:商品秒杀过程中,库存数量的减少,避免出现超卖的情况。CREATE TABL原创 2021-02-27 22:30:13 · 239 阅读 · 0 评论