03 2023 档案
摘要:mysql主从复制中,需要将主从复制关系清除,需要取消其从库角色。这可通过执行RESET SLAVE ALL清除从库的同步复制信息、包括连接信息和二进制文件名、位置。从库上执行这个命令后,使用show slave status将不会有输出。 reset slave是各版本Mysql都有的功能,在st
阅读全文
摘要:逻辑存储结构 表空间,段、区、页、行 系统表空间和独占表空间、通用表空间 一个区的大小是1M,一个页的大小是16K,一个区就包含64个连续的页。 InnoDB引擎在分配空间时会一次性申请4到5个区,从而保证申请到的页是连续的。 架构 内存结构 缓冲区:将80%的内存都分配给缓冲区,因为通过缓冲区那么
阅读全文
摘要:基本概念 1). 当前读 读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select ... lock in share mode(共享锁),select ...for update、update、insert、delete(排他
阅读全文
摘要:事务基础 1). 事务 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 2). 特性 • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。• 一致性(Con
阅读全文
摘要:逻辑存储结构 InnoDB的逻辑存储结构如下图所示: 1). 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个表空间,用于存储
阅读全文
摘要:概述:锁是在并发访问时,解决数据的有效性、一致性问题,有全局锁、表级锁、行级锁,锁粒度越小越好。 全局锁:是对整个数据库实例加锁,一旦对整个数据库实例加了锁,那么就意味着这个数据库的实例处于只读状态,是不能够进行写入操作的,其他所有的写入操作都会处于阻塞状态, 性能比较差,主要是用着数据的逻辑备份。
阅读全文
摘要:概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库
阅读全文
摘要:介绍 触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性, 日志记录 , 数据校验等操作 。 使用别名OLD和NEW来引用触发器中发生变化的
阅读全文
摘要:介绍存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用 特点: 封装,复用 > 可以把某一业务SQL
阅读全文
摘要:介绍视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 语法 1). 创建 CREA
阅读全文
摘要:1.插入数据 批量插入、手动控制事务、主键顺序插入 大批量插入:load data local infile 2.主键优化 主键长度尽量短、顺序插入、自增主键、不要使用UUID 3.order by using index 直接通过索引返回数据,性能高 using filesort 需要将排序返回的
阅读全文
摘要:我们主要需要注意一下update语句执行时的注意事项。 update course set name = 'javaEE' where id = 1 ; 当我们在执行删除的SQL语句时,会锁定id为1这一行的数据,然后事务提交之后,行锁释放。 但是当我们在执行如下SQL时。 update cours
阅读全文
摘要:为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种: 读未提交、读已提交、可重复读、序列化 1). 查看事务隔离级别 SELECT @@TRANSACTION_ISOLATION;2). 设置事务隔离级别 SET [ SESSION | GLOBAL ] TRANSACTIO
阅读全文
摘要:赃读:一个事务读到另外一个事务还没有提交的数据。 比如B读取到了A未提交的数据。 2). 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。 事务A两次读取同一条记录,但是读取到的数据却是不一样的。 3). 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入
阅读全文
摘要:原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。持久性(Durability)
阅读全文
摘要:控制事务一 1). 查看/设置事务提交方式 SELECT @@autocommit ;SET @@autocommit = 0 ;2). 提交事务 COMMIT; 3).回滚事务 ROLLBACK; 注意:上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们
阅读全文
摘要:概述在之前的测试中,我们发现,如果数据量很大,在执行count操作时,是非常耗时的。MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高; 但是如果是带条件的count,MyISAM也慢。InnoDB 引擎就麻烦了,它执行 count(*) 的
阅读全文
摘要:在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。 们一起来看看执行limit分页查询耗时对比: 通过测试我们会看到,越往后,分页查询效率越低,这就是分页查询的问题所在。因为,当在进行分页查询时,如果执行 limit 2000000,10 ,此时需要MySQL排序前2
阅读全文
摘要:分组操作,我们主要来看看索引对于分组操作的影响 首先我们先将 tb_user 表的索引全部删除掉 。 drop index idx_user_pro_age_sta on tb_user;drop index idx_email_5 on tb_user;drop index idx_user_ag
阅读全文
摘要:MySQL的排序,有两种方式:Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sortbuffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。 Using index : 通过有序索引顺序扫描直接返回有序数据,这
阅读全文
摘要:满足业务需求的情况下,尽量降低主键的长度。插入数据时,尽量选择顺序插入,选择使用AUTO_INCREMENT自增主键。尽量不要使用UUID做主键或者是其他自然主键,如身份证号。业务操作时,避免对主键的修改。
阅读全文
摘要:https://blog.csdn.net/idiot5lie/article/details/114167486 方法 1:修改配置文件 nsswitch_conf 快捷键ctrl + alt + t 打开终端,输入 sudo vim /etc/nsswitch.conf 进入配置文件 将host
阅读全文
摘要:插入数据 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。 insert into tb_test values(1,'tom');insert into tb_test values(2,'cat');insert into tb_test values(3,'jerry'
阅读全文
摘要:1). 针对于数据量较大,且查询比较频繁的表建立索引。2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。4). 如果是字符串类型的字段,字段的长度较
阅读全文
摘要:验证索引效率 在讲解索引的使用原则之前,先通过一个简单的案例,来验证一下索引,看看是否能够通过索引来提升数据查询性能。在演示的时候,我们还是使用之前准备的一张表 tb_sku , 在这张表中准备了1000w的记录。 这张表中id为主键,有主键索引,而其他字段是没有建立索引的。 我们先来查询其中的一条
阅读全文
摘要:某次操作linux系统,误将装有该linux系统的移动硬盘直接从笔记本电脑拔出来,即使插入该移动硬盘,启动vmware加载移动硬盘上的虚拟机(以为是可以不受任何影响的),结果出现以下问题。 1.出现网络配置问题,无法ping通宿主机导致xshell等远程访问客户端无法登录系统 重新配置ifcfg-e
阅读全文
摘要:xshell输入慢的问题是由ssh的服务端在连接时会自动检测dns环境是否一致所导致的,这里将UseDNS yes 改为UseDNS no 即可 具体操作如下: 打开sshd服务的配置文件vi /etc/ssh/sshd_config ,把UseDNS yes 改为 UseDNS no 即可 然后重
阅读全文
摘要:当单表行数超过500W行或者单表数据容量超过2G时,就会对查询性能产生较大影响,这个时候建议对表进行优化。 其实500W数据只是一个折中的值,具体的数据量和数据库服务器配置以及mysql配置有关,因为Mysql为了提升性能,会把表的索引装载到内存,innodb_buffer_pool_size 足够
阅读全文
摘要:SQL执行频率 MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次: -- session 是查看当前会话 ;-- global
阅读全文
摘要:聚集索引(聚簇索引)(Clustered Index) 将数据存储与索引放在一起,索引结构的叶子节点保存了行数据,必须有,而且只能有一个 二级索引(非聚餐索引)(Secondary Index)将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键,可以存着多个。 聚集索引选取规则: 如果存着主
阅读全文
摘要:首先,相对于二叉树存储同样的数据层级更少,搜索效率更高,假设恰好存储的是一组单向顺序插入的链表数据时,其层级是逐级递增的,很明显插入和查询性能都降低; 其次,B树虽然利用了向上分裂的数据结构算法规则,在一定程度上优化了存储性能,但其每个节点除了存放键值和地址外,还会存放当前节点的数据,这样相当于页上
阅读全文
摘要:Hash索引实际上是采用Hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。 如果两个或多个键值,映射到相同的槽位上,它们就会产生冲突,也称hash碰撞,可以通过链表来解决hash冲突,相同的键值对象将会按照链表链接在当前槽位的后续节点中。 比如: hash索引的特
阅读全文
摘要:实际上它就是B树的变种,以一颗最大度数(max-degree)为4(4阶)的b+tree为例: 所有的元素都会出现在叶子节点, 叶子节点形成一个单向链表,每一个节点都会通过一个指针指向下一个元素。 Mysql索引数据结构对经典的B+Tree树结构进行了优化。在原B+Tree树的基础上,增加了一个指向
阅读全文
摘要:B-Tree树是一种多路平衡查找树,以一颗最大度数(max-degree)为5(5阶)的b-tree为例,每个节点最多存储4个key,5个指针。 树的度数指的是一个节点的子节点个数。 可以通过一个数据结构可视化的网站来简单演示一下。https://www.cs.usfca.edu/~galles/v
阅读全文
摘要:假如Mysql的索引结构是二叉树的数据结构,比较理想的结构如下: 如果主键是顺序插入的,则会形成一个单向链表,结构如下: 所以,如果选择二叉树作为索引结构,会存在以下缺点: 顺序插入时会形成一个链表,查询性能大大降低。 大数据情况下,层级较深,检索速度慢(二叉树由于一个节点下最多只能包含两个子节点)
阅读全文
摘要:Mysql索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包括以下几种: B+Tree索引:最常见的索引结构,大部分存储引擎都支持B+Tree索引。 Hash索引:底层数据结构是用Hash表也就是哈希表实现的,只有精确匹配索引列的查询才有效,不支持范围查询。 R-Tree索引:也称空间索引
阅读全文
摘要:索引是帮助mysql高效获取数据的数据结构(有序)。在数据之外,数据库还维护着满足特点查找算法的数据结构,这些数据结构以某种方式引用数据或者说指向数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 索引有:二叉树、红黑树、B+Tree树、B-Tree树 优点:提高数据解锁效率
阅读全文
摘要:在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。InnoDB: 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删
阅读全文
摘要:InnoDB引擎与MyISAM引擎的区别 ?①. InnoDB引擎, 支持事务, 而MyISAM不支持。②. InnoDB引擎, 支持行锁和表锁, 而MyISAM仅支持表锁, 不支持行锁。③. InnoDB引擎, 支持外键, 而MyISAM是不支持的。主要是上述三点区别,当然也可以从索引结构、存储限
阅读全文
摘要:介绍:Memory存储引擎的表数据存储在内存中,由于受到硬件的问题、或断电问题的影响,只能将这些表作为临时的表或缓存使用。 特点:内存存放、hash索引(默认) 文件:xxx.sdi(存表结构信息)、没有存表数据文件和表索引文件。
阅读全文
摘要:介绍:MyISAM存储引擎是mysql早期的默认存储引擎 特点:不支持事务、不支持外键、不支持行锁,支持表锁,访问速度比较快。 文件:.MYD(存放表的数据)、.MYI(存放表的索引)、.sdi(文本格式的json文件,存储表结构信息)。
阅读全文
摘要:介绍:InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。 特点:支持事务、行级锁、外键 文件:xxx.ibd是表空间文件,其中的xxx代表表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm-早
阅读全文
摘要:连接层 服务层:系统管理和测试工具、连接池、sql接口、解析器、查询优化器、缓存 引擎层:InnoDB、MyISAM、NDB、Archive、Federated、Memory、Merge、Partner、Comunity、Custom 存储层:系统文件、文件和日志 系统文件:NTFS、ufs、ext
阅读全文
摘要:访问网站:oracle.com 点击:Resources-->Java Downloads 相当于访问:https://www.oracle.com/java/technologies/downloads/ 找到jdk1.8,下载对应版本,比如linuxt位32位,则下载:jdk-8u361-lin
阅读全文
摘要:SSH类似于Telnet,可以用来远程操控,但是这种方式走的是明文,这样不安全。 安全shell是加过密的,这样就保证安全。 1.执行命令,产生秘钥命令:ssh-keygen -t rsa,一直回车,产生两个秘钥文件,一个是私钥一个是公钥。 产生的秘钥位于当前当前用户home用户下的ssh文件夹中:
阅读全文
摘要:Linux虚拟机关闭防火墙是不安全的,但在仅主机的模式下是没问题的,关闭防火墙是为了让虚拟机集群可以相互访问。 命令:service iptables stop 验证: service iptables status 显示iptables: Firewall is not running. 但是虚拟
阅读全文
摘要:hostname和ip绑定: 根目录执行命令vi /etc/hosts 如192.168.137.55 mysql 验证:ping mysql
阅读全文
摘要:ssh连接虚拟机,根目录下,vi /etc/sysconfig/network 将: NETWORKING=yes HOSTNAME=XXX.XXX 改成: NETWORKING=yes HOSTNAME=mysql 这样主机名就改成“mysql”了。
阅读全文
摘要:The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is.The server's rsa2 key finge
阅读全文
摘要:图书馆上网可以访问百度等网站,但是当搜索“博客园”可以搜索到链接很多,点击博客园任何一个链接都无响应。 网络一直卡在访问的状态。 图书馆服务器可以正常访问博客园,但是笔记本wifi认证登录网络却不能正常访问博客园(访问百度等网站是可以的), ping cnblogs.com是可以ping通的,就是浏
阅读全文
摘要:现象:在图书馆配置好虚拟机网络,可以相互ping通,虚拟机还可以上网(WLAN共享给了虚拟机)。直接拔掉磁盘,虚拟机VMware也没有退出,将笔记本从图书馆换到咖啡厅,连上磁盘(虚拟机镜像在磁盘上),发现宿主机可以ping通虚拟机,但是虚拟机ping不同宿主机。 原因:由于虚拟机存在移动硬盘上,虚拟
阅读全文
摘要:对于图书馆等公共热点场所,wifi连接后是需要认证的,首次连接wifi会显示感叹号,因为还需要登录认证。 认证通过后就可以上网了,后续连接网络就无需认证自动连上Internet了。 现象:某次连接图书馆wifi,发现无线网络图标一直显示连上但是有个感叹号,也不跳转wifi认证页面,接着打开浏览器也无
阅读全文