
mysql
文章平均质量分 79
mysql数据库
jiqiren1994
基本所有文章都是总结性质得文章,将网上大部分博主的内容整合了一下,加入了部分自己的理解,方便自己工作时查阅资料用,好处就是不用忘记了去搜各种文章。
展开
-
mysql 读写分离
读写分离引入时机大多数互联网业务中,往往读多写少,这时候数据库的读会首先成为数据库的瓶颈。如果我们已经优化了SQL,但是读依旧还是瓶颈时,这时就可以选择“读写分离”架构了。读写分离首先需要将数据库分为主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过主从复制机制进行数据的同步,如图所示。在应用中可以在从库追加多个索引来优化查询,主库这些索引可以不加,用于提升写效率。读写分离架构也能够消除读写锁冲突从而提升数据库的读写性能。使用读写分离架构需要注意:主从同步延迟和读写分配机制问题.原创 2021-02-19 15:16:37 · 259 阅读 · 1 评论 -
mysql 并行复制
并行复制原理MySQL的主从复制延迟一直是受开发者最为关注的问题之一,MySQL从5.6版本开始追加了并行复制功能,目的就是为了改善复制延迟问题,并行复制称为enhanced multi-threaded slave(简称MTS)。在从库中有两个线程IO Thread和SQL Thread,都是单线程模式工作,因此有了延迟问题,我们可以采用多线程机制来加强,减少从库复制延迟。(IO Thread多线程意义不大,主要指的是SQL Thread多线程)在MySQL的5.6、5.7、8.0版本上,都是基于上原创 2021-02-19 15:00:05 · 779 阅读 · 0 评论 -
MySQL事务和锁
一、ACID 特性在关系型数据库管理系统中,一个逻辑工作单元要成为事务,必须满足这 4 个特性,即所谓的 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。1.1 原子性原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。修改—》Buffer Pool修改—》刷盘。可能会有下面两种情况:事务提交了,如果此时Buffer Pool的脏页没有刷盘,如何保证修改的数据生效? Redo如果事原创 2021-02-19 14:39:57 · 239 阅读 · 0 评论 -
MySQL索引学习
一、索引类型索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)1.1 普通索引这是最基本的索引类型,基于普通字段建立的索引,没有任何限制。创建普通索引的方法如下:CR原创 2021-02-19 14:22:19 · 158 阅读 · 0 评论 -
MySQL底层原理学习
MySQL体系架构MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。一、网络连接层客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。二、服务层(MySQL Server)服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分原创 2021-02-19 13:19:55 · 450 阅读 · 3 评论 -
Sharding-JDBC分布式事务实战
简介ShardingSphere整合了XA、Saga和Seata模式后,为分布式事务控制提供了极大的便利,我们可以在应用程序编程时,采用以下统一模式进行使用。实战引入Maven依赖 //XA模式 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-transaction-xa-core</artifactId> &l原创 2021-02-18 10:55:48 · 1320 阅读 · 1 评论 -
Sharding-JDBC 分库分表、读写分离实战
需求采⽤Sharding-JDBC实现c_order表分库分表+读写分离基于user_id对c_order表进⾏数据分⽚分别对master1和master2搭建⼀主⼆从架构基于master1和master2主从集群实现读写分离c_order建表SQL如下:CREATE TABLE `c_order`( `id` bigint(20) NOT NULL AUTO_INCREMENT, `is_del` bit(1) NOT NULL DEFAULT 0 COMMENT '是否被删除',原创 2021-02-17 22:15:47 · 513 阅读 · 0 评论 -
Sharding-JDBC 学习
介绍Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架的使用。适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。支持任意实原创 2021-02-17 21:28:32 · 411 阅读 · 0 评论 -
ShardingSphere
介绍Apache ShardingSphere是一款开源的分布式数据库中间件组成的生态圈。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。ShardingSphere项目发展如下:ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能原创 2021-02-17 21:21:10 · 188 阅读 · 0 评论 -
分库分表
问题用户请求量太大单服务器TPS、内存、IO都是有上限的,需要将请求打散分布到多个服务器单库数据量太大单个数据库处理能力有限;单库所在服务器的磁盘空间有限;单库上的操作IO有瓶颈单表数据量太大查询、插入、更新操作都会变慢,在加字段、加索引、机器迁移都会产生高负载,影响服务如何解决垂直拆分垂直分库微服务架构时,业务切割得足够独立,数据也会按照业务切分,保证业务数据隔离,大大提升了数据库的吞吐能力。垂直分表表中字段太多且包含大字段的时候,在查询时对数据库的IO、内存会受到影响,同时原创 2021-02-17 21:16:43 · 155 阅读 · 0 评论 -
MHA高可用
MHA架构MHA(Master High Availability)是一套比较成熟的 MySQL 高可用方案,也是一款优秀的故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA还支持在线快速将Master切换到其他主机,通常只需0.5-2秒。MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Man原创 2021-02-16 11:31:26 · 276 阅读 · 1 评论 -
mysql 半主从复制
使用命令select @@have_dynamic_loading;查看数据库是否支持动态插件安装功能使用命令show plugins;查看插件使用命令 install plugin rpl_semi_sync_master soname ‘semisync_master.so’;安装插件使用命令show variables like '%semi%'查看相关参数开启插件并设置超时set global rpl_semi_sync_master_enabled=1;set global rp原创 2021-02-15 22:16:43 · 1072 阅读 · 3 评论 -
mysql 主从复制配置
在/etc目录下找到my.cnf文件编辑my.cnf文件,设置log_bin=mysql-bin开启Logbin功能,设置server.id=1。systemctl restart mysqld重启mysql服务。然后连接到mysql,使用以下三个命令给从库授权。我们再使用 show master status 就能查看到当前所使用得binlog文件是哪一个了。grant all privileges on *.* to 'root'@'%' identified by 'root';grant原创 2021-02-13 23:55:55 · 172 阅读 · 0 评论 -
在centos7中安装mysql
安装Mysql将mysql rpm包传入到服务器上如果是最小安装环境,还需要安装rz sz命令解压tar文件删除mariadb依赖使用rpm -ivh mysql-community-xxx分别安装common、libs、libs-compat、server、client、devel等rpm文件。注意:安装server得时候因为缺少依赖,所以我们需要添加相关依赖。查找依赖yum search perlyum search libaio yum search net-tool原创 2021-02-13 23:10:26 · 183 阅读 · 0 评论