![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
Snowballl
数据库攻城师
展开
-
Haproxy安装配置
安装# tar -xvf haproxy-2.0.14.tar.gz# uname -r3.10.0-1062.18.1.el7.x86_64# cd haproxy-2.0.14#编译 uname -r #查看系统内核版本号#make TARGET=linux3100 CPU=x86_64 PREFIX=/usr/local/haprpxy#安装# make install PREFIX=/usr/local/haproxy初始化Haproxy# mkd..原创 2021-04-26 14:02:33 · 191 阅读 · 0 评论 -
水平分库
原创 2021-04-24 19:22:53 · 77 阅读 · 0 评论 -
垂直分库
原创 2021-04-24 19:21:40 · 80 阅读 · 0 评论 -
垂直分表
原创 2021-04-24 19:19:21 · 117 阅读 · 0 评论 -
mysql数据量大的情况下处理方式
原创 2021-04-24 19:07:22 · 756 阅读 · 0 评论 -
等待事件
第一章节 等待事件1.1performance_schema查看配置表如下mysql> SELECT table_nameFROM information_schema.tables tWHERE t.table_schema='performance_schema'AND t.table_name LIKE 'setup%' ;+-------------------+| table_na...原创 2021-04-16 05:19:02 · 478 阅读 · 0 评论 -
执行计划查看
执行计划包含的信息 id 有一组数字组成。表示一个查询中各个子查询的执行顺序;- id相同执行顺序由上至下。- id不同,id值越大优先级越高,越先被执行。- id为null时表示一个结果集,不需要使用它查询,常出现在包含union等查询语句中。select_type 每个子查询的查询类型,一些常见的查询类型。| id | select_ty pe | descripti on || ---- | ------------ | ---...原创 2021-04-14 17:54:51 · 134 阅读 · 0 评论 -
数据库的乐观锁和悲观锁是什么?怎么实现的
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。在查询完数据的时候就把事务锁起来,直到提交事务。实现方式:使用数据库中的锁机制乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。在修改数据的时候把事务锁起来,通过version的方式来进行锁定。实现方式:乐一般会使用版本原创 2021-04-14 17:13:47 · 759 阅读 · 0 评论 -
什么是事务的隔离级别?MySQL的默认隔离级别是什么
为了达到事务的四大特性,数据库定义了4种不同的事务隔离级别,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。| 隔离级别 | 脏读 | 不可重复 读 | 幻影读 || ------------------ | ---- | ------------ | ------ || READ- UNCOM MITTED | √ | √ ...原创 2021-04-14 17:09:16 · 320 阅读 · 0 评论 -
数据库为什么使用B+树而不是B树
B树只适合随机检索,而B+树同时支持随机检索和顺序检索;B+树空间利用率更高,可减少I/O次数,磁盘读写代价更低。一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗。B+树的内部结点并没有指向关键字具体信息的指针,只是作为索引使用,其内部结点比B树小,盘块能容纳的结点中关键字数量更多,一次性读入内存中可以查找的关键字也就越多,相对的,IO读写次数也就降低了。而IO读写次数是影响索引检索效率的最大因素;原创 2021-04-14 17:08:07 · 1338 阅读 · 0 评论 -
hash索引与b+ 树索引区别
Hash索引和B+树所有有什么区别或者说优劣呢?首先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据。B+树底层实现是多路平衡查找树。对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。么可以看出他们有以下的不同:hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询。因为在hash索引中经过has原创 2021-04-14 17:03:07 · 1085 阅读 · 0 评论 -
锁现象排查方法
第一章节锁等待原因介绍1.1sys介绍mysql 5.6也可以有sys库(基于performance_schema的视图)。sys库是一个开源项目,在githup上早就有,是一个DBA的开源工具,后来mysql感觉好,就放在了mysql5.7上。下载地址:https://github.com/mysql/mysql-sys$cd mysql-sys-master$mysql < sys_56.sql这样,就可以在mysql5....原创 2021-04-13 06:00:24 · 155 阅读 · 0 评论 -
mysql的pga-优化
对于per_thread_buffers,可以将理解oracle的pga,为每个连到Mysql的用户进程分配的内存,其参数如下:1、read_buffer_size这参数用于表的顺序扫描,表示每个线程分配的缓存区大小。比如,在进行全表扫描时,Mysql会按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在 read_buffer_size中,当buffer空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率。默认128kb,这个参数孬设置...原创 2021-04-11 17:37:27 · 160 阅读 · 0 评论 -
不要轻易使用中间件
中间件很危险。如果使用中间件,建议使用业务方式来实现,不要使用中间件,但快递行业最适合使用中间件。原创 2021-04-11 17:35:06 · 365 阅读 · 0 评论 -
分库分表均衡键
原创 2021-04-11 17:30:17 · 159 阅读 · 0 评论 -
分库分表优缺点及存在的问题
分库分表的中间件常见的问题:1、 扩容不方便(在增加数据库实例的时候,需要重分布数据)2、 分布键变更很麻烦(刚开始需要买家id,后面又要根据卖家id查询时)3、 分布键选择(架构设计)需要谨慎,甚至很多sharding产品不支持多个分布键、或者不支持随机分布,导致业务不得不使用没有任何意义的自增序列来作为分布键。4、 无法支持复杂查询。跨库JOIN性能差,甚至只能按分布键JOIN,其他字段不支持JOIN。(因为这种产品架构数据节点之间是孤岛,数据需要...原创 2021-04-11 17:25:32 · 2954 阅读 · 0 评论 -
回滚段简介
一、回滚段变更二、什么是回滚段Mysql5.5之前的版本,只能用到1024个并发线程。Mysql5.5版本,能用到1024*128个并发线程,约12w并发线程;存放在共享表空间(ibdata)Mysql5.6版本,把回滚段放到指定的文件中,不会有太大的作用,阿里云的RDS没有进行重新划分。mysql>show variables like '%undo%'+--------------------------+-----------------...原创 2021-04-11 17:16:31 · 694 阅读 · 0 评论 -
mysql8.0二进制日志设置变更
在配置文件/etc/my.cnf,进行添加如下内容:skip-log-bin原创 2021-04-11 17:02:45 · 166 阅读 · 0 评论 -
分布式事务实现
CAP理论一致性(Consistency) 可用性(Availability) 分区容错性(网络分区)Partition toleranceCAP理论的特点,就是CAP只能满足其中2条CA(放弃P):将所有的数据放在一个节点。满足一致性、可用性。AP(放弃C):放弃强一致性,用最终一致性来保证。CP(放弃A):一旦系统遇见故障,受到影响的服务器需要等待一段时间,在恢复期间无法对外提供服务。一致性算法问题:为了解决分布式一致性问题,产生了不少经典的分布式一致性算法..原创 2021-04-11 08:47:15 · 73 阅读 · 0 评论 -
Mysqldump导出的文件只导入一张表
使用如下方式grep -i 'INSERT INTO `ty_company_rongzi`' .20210322.sql.swp >data.sql &原创 2021-04-07 21:20:00 · 387 阅读 · 0 评论 -
Myisam缓存
myisam只缓存索引文件,而不缓存数据文件,这与大多数的数据库都非常不同。数据文件的缓存由操作系统本身来完成,这与其他使用LRU算法缓存数据的大部分数据库大不相同。原创 2021-04-07 21:18:24 · 230 阅读 · 0 评论 -
怎么查看mysql的配置文件
[root@lqyqdb ~]# mysql --help|grep my.cnf/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnforder of preference, my.cnf, $MYSQL_TCP_PORT原创 2021-04-07 21:17:12 · 283 阅读 · 0 评论 -
事务隔离级别测试
查看默认的隔离级别:select @@tx_isolation注:默认的隔离级别是可重复读。读未提交窗口一设置隔离级别为读未提交set session transaction isolation level read uncommitted;start transaction;insert into luna values(1,'dd','1',now());窗口二查看数据select * fr...原创 2021-04-07 21:15:22 · 157 阅读 · 0 评论 -
MVCC介绍
简介MVCC(Multi-Version Concurrency Control)即多版本并发控制。MySQL的大多数事务型(如InnoDB,Falcon等)存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,他们一般都同时实现了MVCC。当前不仅仅是MySQL,其它数据库系统(如Oracle,PostgreSQL)也都实现了MVCC。值得注意的是MVCC并没有一个统一的实现标准,所以不同的数据库,不同的存储引擎的实现都不尽相同。作为MySQL中使用最广泛的存储引擎,本文主要讨论的是Inno原创 2021-04-07 21:11:55 · 317 阅读 · 0 评论 -
mysql闪回案例
下载页面github项目地址:https://github.com/58daojia-dba/mysqlbinlog_flashbackhttps://segmentfault.com/a/1190000008687972原理介绍mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具。一般用于数据恢复的目的。 所谓反向的sql语句就是如果是insert,则反向的sql为delete。如果delete...原创 2021-04-07 21:08:58 · 123 阅读 · 0 评论 -
Nested-Loop Join三种算法
Simple Nested-Loop Join如下图,r为驱动表,s为匹配表,可以看到从r中分别取出r1、r2、......、rn去匹配s表的左右列,然后再合并数据,对s表进行了rn次访问,对数据库开销大在没有索引的情况下,会进行n次的全表扫描Index Nested-Loop Join(索引嵌套)这个要求非驱动表(匹配表s)上有索引,可以通过索引来减少比较,加速查询。在查询时,驱动表(r)会根据关联字段的索引进行查找,挡在索引上找到符合的值...原创 2021-04-07 21:02:33 · 5046 阅读 · 0 评论 -
mysql体系结构
数据库:一组二进程的文件数据库实例:用来操作数据库二进程文件Mysql不能一个数据库对应多个数据库Mysql是单进程多线程,与sqlserver一样;与oracle和postgresql是不一样的。原创 2021-04-06 12:19:09 · 52 阅读 · 0 评论 -
usage权限
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。如果是oracle数据库那么就需要建立create sesssion的权限,mysql> show grants for 'wangm';+------------------------------------------------------------------------------------------------------+| Grants for wangm@% ...原创 2021-04-06 12:16:11 · 957 阅读 · 0 评论 -
数据库字符符介绍
一、character_set_client 主要用来设置客户端使用的字符集。二、character_set_connection 主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。三、character_set_database 主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。四、character_set_filesystem 文件系统的编码格式,把操作系统上的文件名转化成原创 2021-04-06 12:07:43 · 2138 阅读 · 0 评论 -
mysql版本升级(数据量大的情况下)
在mysql数据量比较大的情况下(比如300G),如果使用mysqldump进行升级花的时间会比较久,有什么好的办法呢?一、升级过程1、把mysql的软链接删除,升级数据库软件2、数据库文件升级mysql_upgrade –pxxx --force -s注:这里可以把数据库mysql5.6直接升级到mysql5.7,当然居我所知,可以从mysql5.1升级到mysql5.7可以进行跨版本升级。升级元数据,一定要加上-s,否则会造成所有的表都更新一遍,性能比较差(如果数据量比较..原创 2021-04-06 10:59:11 · 314 阅读 · 0 评论 -
MySQL 5.6与mysql5.7安装变更
MySQL 5.6.X 安装:shell> yum install libaio # Debain系用户:apt-get install libaio1shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /usr/localshell> tar zxvf /path/to/mysql-VERSION-OS.tar.gzshell> ln -s full-path-to-mysql-VERSION-原创 2021-04-06 10:51:50 · 122 阅读 · 0 评论 -
MySQL版本选型
Mariadb使用的存储引擎xtraDB存储引擎,与innodb存储引擎兼容的(增强型的)。MySQL5.6以后的版本,推荐使用官方版本。 Percona:在5.6版本以后,MySQL将Percona之前优化集成到官方版本中; MariaDB:无INNODB;且核心代码较老 MySQL在5.6以后不断重构源码,安装包越来越大,功能和性能在持续改进...原创 2021-04-06 10:50:54 · 181 阅读 · 0 评论 -
官方网站模块介绍
官方网站:http://www.mysql.comDeveloper Zone: MySQL开发工程师板块 Articles: Oracle工程师自己的博客 Plant MySQL: 和MySQL相关从业人员的博客 Bugs:MySQL BugList Worklog:开发记录 Labs:MySQL实验性项目 Downloads:MySQL下载 Enterprise:MySQL企业版本相关,略过 Community:社区版,我们下载和使用社区版 MySQL Comm.原创 2021-04-06 10:47:23 · 241 阅读 · 0 评论 -
统计信息持久化
1.1统计信息参数设置在mysql5.6中已经实现,统计信息的持久化。针对上面的两个问题mysql都有给出解决方案,并且都可能通过简单的配置来解决1、针对是否持久化统计信息mysql可以通过innodb_stats_persistent参数来控制mysql> show variables like 'innodb_stats_persistent';+-------------------------+-------+| Variable_name | Va...原创 2021-04-06 10:40:41 · 117 阅读 · 0 评论 -
mysql历史介绍
1.2版本4.0(2003)支持新的语法,比如 UNION 和多表 DELETE 语法。 重写了复制,在备库使用了两个现成来实现复制,避免了之前一个线程所有复制工作的模式下任务切换导致的问题。 InnoDB 成为标准配备,包括了全部的特性:行级锁、外键等。 引入了查询缓存(自那以后这部门改动不大),同时还支持通过 SSL 进行连接。1.3版本4.1(2005)引入了更多新的语法,比如子查询和 INSERT ON DUPLICATE KEY UPDATE。 开始支持 ...原创 2021-04-06 10:27:06 · 98 阅读 · 0 评论 -
mysql3.23的特性
一般认为这个版本的发布是Mysql真正“诞生”的时刻,其开始获得广泛使用。在这个版本,Mysql依然只是一个在平面文件(Flat File) 上实现了 SQL 查询的系统。但一个重要的改进是引入 MyISAM 代替了老旧而且有诸多限制的 ISAM 引擎。InnoDB 引擎也已经可以使用,但没有包含在默认的二进制发行版中,因为它太新了。所以如果要使用 InnoDB,必须手工编译。版本 3.23 还引入了全文索引和复制。复制是 Mysql 成为互联网应用的数据库系统的关键特性。MyISAM只支持表锁,锁的是原创 2021-04-06 10:21:40 · 90 阅读 · 0 评论