自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (3)
  • 收藏
  • 关注

原创 线程和进程的区别

多线程的进程与单线程的进程相比主要有两个优点:更高的效率和共享的存储器。效率提高源于上下文交换的额外开销减少。上下文交换是指操作系统将CPU从一个运行线程调度到另一个线程所需执行的指令。在线程间切换时,操作系统必须保存原先线程的状态(如寄存器中的值)并读取新线程的状态。同一个进程中的线程共享的进程状态越多,操作系统需要改变的状态就越少。因此,同一个进程中的两个线程间的切换比不同进程中的两个线程快。尤其是因为同一进程中的线程共享个存储器地址空间,进程内的线程切换就意味着操作系统不必改变虚拟存储器映射。

2024-06-19 14:10:51 707

原创 深入理解网络传输协议——TCP/IP协议的可靠交付服务的特征

对一个应用程序进程而言,全双工连接包括了两个独立的、流向相反的数据流,而且这两个数据流之间不进行明显的交互。流服务允许一个应用程序进程停止一个方向上的数据流,而继续另一方向上的数据流,这样的连接称为半双工(half duplex)连接。因此,即便应用程序以一次1八位组的方式生成数据流,在互联网上的传输也会相当高效,与此类似,当应用程序要传输特别大块的数据时,协议软件也能把它们划分成适于传输的小数据块。例如,在工资表应用程序中,数据流服务无法区分雇员记录的界限,也不能识别数据流的内容是工资数据。

2024-06-19 12:00:00 404

原创 深入理解网络协议——搞懂协议在系统中的应用

另外,TCP/IP标准还尽量避免让接口使用那些只在某一家厂商的操作系统中可用的特征,因此,TCPIP和其应用程序之间的接口是不精确指明的(loosely specified)。首先,他们扩展了文件描述符集,使应用进程可以创建能被网络通信所使用的描述符。它允许设计者使用各种操作系统实现TCP/IP,这里的操作系统可以是个人计算机中所提供的最简单的系统,也可以是超级计算机所使用的很复杂的系统。更重要的是,它意味着设计者既可以使用过程的接口方式,也可以使用消息传递的接口方式(最适合其所用的操作系统的方式)。

2024-06-19 11:02:54 1391

原创 深入理解网络传输协议——差错控制

我们还要提到的是,虽然因特网的网络层没有直接提供差错控制,但是因特网使用了另一个协议,ICMP。从表面上看网络层好像是不需要差错控制的,因为每个数据报在到达终点之前都要穿过多个网络,而控制这些网络(局域网或广域网)行为的数据链路层已经使用了差错控制机制。虽然逐跳的差错控制在一定程度上能够起到保护数据报的作用,但是它的保护还不够彻底。在路由器处理数据报时出现的差错,数据链路层是无法检测出来的。不过,网络层的设计者还是在数据报上增加了一个检验和字段,它可以控制在首部中出现的任何损坏,而不是针对整个数据报的。

2024-06-19 10:30:00 909

原创 概念描述——TCP/IP模型中的两个重要分界线

当我们看到TCP/P软件的层次结构时,应该记得之前介绍的概念:一个概念性的界限把使用低层地址(物理地址)的软件和使用高层地址(IP地址)的软件区分开来。如下图所示,这个分界线出现在网络接口层和Internet层之间。即:应用程序和在Intemet层之上的所有协议软件只使用IP地址,而网络接口层处理的是物理地址。因此,像ARP这样的处于网络接口层的协议,就不是IP的一部分。这是因为协议软件集成到操作系统中后,在协议软件的低层之间进行数据传输的代价比在应用程序和运输层之间传输数据的代价要小得多。

2024-06-18 16:52:13 272

原创 深入理解网络传输协议——UDP协议优化

UDP 是一个简单常用的协议,经常用于引导其他传输协议。事实上,UDP 的特色在于它所省略的那些功能:连接状态、握手、重发、重组、重排、拥塞控制、拥塞预防、流量控制,甚至可选的错误检测,统统没有。你的应用程序很可能需要从头实现上述几个或者大部分功能,而且每项功能都必须保证与网络中的其他主机和协议和谐共存。拥塞处理做得不到位的 UDP 应用程序很容易堵塞网络,造成网络性能下降,严重时还会导致网络拥塞崩溃。要尽可能利用已有的库或框架,这个库或框架应该考虑了 NAT 穿透,而且能够与其他并发的网络流量和谐共存。

2024-06-18 15:30:18 221

原创 深入理解HTTP协议——针对TCP的优化建议

因此,优化TCP 的最佳途径就是调整它感知当前网络状况的方式,根据它之上或之下的抽象层的类型和需求来改变它的行为。然后,通过在不同的地区部署服务器(比如,使用 CDN),把数据放到接近客户端的地方,可以减少网络往返的延迟,从而显著提升 TCP 性能。根据应用程序的类型,可能还有必要调整服务器上的其他 TCP 设置,以便优化高速连接的速度、内存占用,或者其他类似的关键选项。必要时,可以参考平台文档。优化 TCP 性能的回报是丰厚的,无论什么应用,性能提升可以在与服务器的每个连接中体现出来。

2024-06-18 12:00:39 1125

原创 yum 使用报错(ModuleNotFoundError: No module named ‘_error‘)解决方案

3.查看新编译openssl下libssl.so.1.1动态库是否定义了SSLv3_client_method。1.查看libssl.so.1.1动态库中是否定义了SSLv3_client_method。4.将新生成的libssl.so.1.1 替换旧的libssl.so.1.1。操作系统:Kylinv10。

2024-03-22 10:03:10 1078

原创 数据库实践——瀚高数据库设置自增字段

等同于。

2023-10-26 09:55:31 1183

原创 瀚高数据库开机自启动失败

问题描述:使用瀚高数据库企业版,开机自启动没有正常运行。

2023-10-24 09:33:43 611

原创 MySQL实践——分页查询优化

从执行计划中可以看出,首先执行子查询中的employees表,根据主键做索引全表扫描,然后与a表通过emp_no做主键关联查询,相比传统写法中的全表扫描效率会高一些。优化后的分页查询写法,会先查询翻页中需要的N条数据的主键值(emp_no),然后根据主键值回表查询所需要的N条数据,在此过程中查询N条数据的主键id在索引中完成,所以效率会高一些。随着limit M,N值的增大,往往在越往后翻页的过程中速度越慢,原因是MySQL会读取表中的前M+N条数据,M越大,性能就越差。

2023-10-23 14:18:46 233

原创 MySQL应用——常见故障分析和检查

对于故障发生的时间、MySQL的报错信息、系统日志中的错误信息、硬件日志及报错信息,以及监控系统和MySQL在故障期间的异常情况,在故障发生前开发人员或者运维人员做过的发布、修改等操作,都是DBA需要了解和整理的。另外需要注意的是,当一个故障发生时,你需要关注你看到的到底是故障的结果还是故障的原因。以上简单总结了日常故障排查的方法和思路,按照故障已经发生和在故障现场诊断、分析来区分,介绍了一些需要注意的要点。最后对故障重现和现场分析进行了详细介绍,包括故障复现排查时的4个关键点。

2023-10-17 14:01:31 277

原创 MySQL实践——MySQL权限

MySQL的mysql 系统库提供了user、db、tables_priv、columns_priv、procs_priv、proxies_priv几个表,用于存放不同权限范围的用户账号相关数据,这些表共同组成了MySQL的访问权限控制系统。MySQL访问权限控制系统的主要功能是对从给定主机连接到MySQL服务器的用户进行身份验证,并校验该用户在该服务器中的数据库对象访问权限(如SELECT、INSERT、UPDATE和DELETE)。

2023-10-11 10:50:48 1130

原创 Linux系统命令——通过端口确认进程及路径方法

比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。

2023-09-22 14:53:37 589

原创 国产系统适配——kylin安装32位老linux程序方法

对不是动态可执行文件错误,一般是32位程序在64位操作系统上无法运行,特别是最新系统如麒麟,仅支持64位包,不提供32位包,linux高版本系统也默认不能安装32位包,需带参。在对应的linux机器上找到该so文件copy过来到对应路径便可,注意不要与本操作系统的so文件冲突,建议在程序目录下建lib目录,相关not found未找到的so文件放在该目录,再在。命令是用来下载全量依赖包到当前执行目录,注意命令执行后包含了32位和64位rpm,强烈建议下载完毕后执行命令。中追加该lib路径,

2023-09-22 13:43:05 1150

原创 MySQL实践——分析MySQL中使用order by和limit每次返回结果不同的问题及解决办法

作为一名开发者,我们经常会遇到各种数据库问题。其中,MySQL排序结果不一致问题是一个比较常见的问题。当我们在使用MySQL进行排序时,有时候会发现相同的查询多次执行,但排序结果却不一致。这个问题可能会给我们的业务带来困扰和不确定性。首先我们来还原下现象,然后我们在分析下原因,找到解决办法。

2023-09-18 14:08:10 1356

原创 MySQL实践——如何查看MySQL性能

可以使用两种机制来管理和监控MySQL服务器的运行情况。使用服务器变量来控制其运行情况,并使用服务器状态变量读取其运行情况配置和关于功能和性能的统计信息。服务器中有很多配置变量。有些变量只能在启动时设置(被称为启动选项,这些也可以在选项文件中设置)。其他的一些变量可以被设置成适用于全局级(对于所有连接有效)、会话级别(单个连接)或同时适用于全局和会话两个级别。可以使用以下命令读取状态变量。前两条命令显示所有本地或会话范围(默认情况下是会话)的变量值。

2023-08-10 16:52:01 1192

原创 MySQL实践——历史问题诊断和现场故障分析

对于故障发生的时间、MySQL的报错信息、系统日志中的错误信息、硬件日志及报错信息,以及监控系统和MySQL在故障期间的异常情况,在故障发生前开发人员或者运维人员做过的发布、修改等操作,都是DBA需要了解和整理的。另外需要注意的是,当一个故障发生时,你需要关注你看到的到底是故障的结果还是故障的原因。

2023-08-03 13:32:16 153

原创 MySQL实践——参数SQL_SLAVE_SKIP_COUNTER的奥秘

实际上,此时Binlog停止的位置是这个组的开始位置,所以在设置好之后,开始的位置肯定是BEGIN或BEGIN之前的一些设置命令的位置,此时设置SQL_SLAVE_SKIP_COUNTER为1之后,后面跳过的就是一个完整的事务,而不是一个事件而已。在skip的时候,看到的是在哪一个位置出错了,但实际上此时是停在了一个事务的开始位置,而出错的位置有可能是在事务中的某一个语句或者行上面,那么此时做skip,实际上是跳过了当前中断位置所在的整个事务。这需要根据不同类型的事件,分别做介绍,如下。

2023-08-02 11:15:51 1473

原创 MySQL实践——快速删除大表

在删除大表的时候,一定要注意对线上数据库的影响。对于大表,可以通过建立硬链接,或者先清理数据,最后再删除的方式,达到预期效果。总之,线上数据库最重要,要让所有操作尽可能小地影响数据库。

2023-08-01 15:20:02 1221

原创 MySQL实践——sys schema介绍及使用

sys Schema中包含了很多以各种方式总结Performance Schema表的视图。这些视图大多数都是成对出现,使得每组视图中的一个成员具有与另一成员相同的名称,加上一个 x$ 前缀。例如,host_summary_by_file_io视图汇总按主机分组的文件I/O及延迟。没有 x$ 前缀的视图提供了更加友好且容易阅读的数据,x$ 前缀的视图提供了原始数据,更多用于需要对数据进行处理的其他工具。

2023-07-31 17:12:10 1056

原创 深入理解MySQL——master thread分析

在很多论坛上都有对这个问题的讨论,有人甚至将这个值调到了20或10,然后测试发现性能会有所提高,但是将innodb_max_dirty_pages_pct调到20或10会增加磁盘的压力,对系统的负担还是会有所增加。大于innodb_max_dirty_pages_pct时,刷新100个脏页,而innodb_adaptive_flushing参数的引入,InnoDB存储引擎会通过一个名为buf_flush_get_desired_flush_rate的函数来判断需要刷新脏页最合适的数量。

2023-01-05 10:01:57 460 1

原创 MySQL复制底层技术——LOGICAL_CLOCK并行复制、WRITESET并行复制

细心的读者可能已经发现了last_committed=2的两个事务的时间戳并不是同一个时刻的,并且在last_committed=2的两个事务之间还夹了一个last_committed=9的事务,这在以往的LOGICAL_CLOCK 并行复制中几乎不可能出现这种情况。后续 如果有新事务的行记录计算出的hash值在hash表中无匹配记录,那么新事务不会导致产生 新的last_committed值,即相当于新事务和之前的事务被归并到了同一个binlog 队列中 (即,last_committed值相同);

2023-01-04 16:37:40 1121 2

原创 MySQL复制底层技术——单线程复制、DATABASE并行复制

对于从库而言,主要的改进点是在从库复制的SQL线程上增加了一个SQL协调器(Coordinator)线程,真正干活的SQL线程被称之为Worker(工作)线程,当Worker线程数量为N(N>1)以及主库的schema数量为N时,从库就可以根据基于多个schema之间相互独立(彼此之间无锁冲突)的语句来实现并行复制;从理论上讲,一前一后的时差必然会导致从库复制延迟,如果碰到大事务,则会急剧放大从库延迟(例如:主库执行一个大事务耗费1小时完成,从库收到这个事务之后开始执行时,就已经落后于主库1小时了)。

2023-01-04 16:25:01 581

原创 MySQL复制技术方案——组复制

前面说过,MGR是基于主从复制基础架构实现的,主要是在事务提交的过程中嵌入单独的binlog封装逻辑,并通过专门的 group_replication_recovery复制通道进行数据传输,组复制插件使用Paxos协议的原子广播特性来保证集群内的大多数节点都能接收到数据包,当节点接收到write set(写集)之后,每个节点上的分布式状态机按照相同的规则对事务进行排序,并进行事务的冲突认证检测。当S1节点崩溃之后,在集群内部重新选举S2作为写节点, 发起写请求的客户端就可以继续对集群发起写请求了。

2023-01-04 16:05:58 1063

原创 MySQL复制技术方案——GTID复制配置

如何跳过一个GTID在复制中,偶尔会遇到主键冲突或从库找不到该条记录等错误。那么如何解决呢?在传统的复制模式中,经常通过设置 sql_slave_skip_counter参数跳过一个事件,如下。但是在GTID模式中,如果继续执行上述操作,就会有如下错误产生。在GTID模式的复制情况下,如果SLAVE发生错误,则可以通过跳过该事务的方式恢复主从复制,如图13.1所示。从图13.1中可以看出,出错事务的Binlog文件为mysql-bin.000003,end_log_pos为426,其开始位置为194。

2023-01-03 10:59:35 1925 1

原创 MySQL复制技术方案——半同步复制配置

Google为MySQL和InnoDB设计了一个大规模补丁集以量身打造服务器和存储引擎。其中一个修补程序可用于MySQL5.0版本,是半同步的复制补丁。MySQL已经打上了该补丁并在MySQL5.5中发布了。半同步复制的理念是在允许更改操作继续执行前,确保更改操作至少被写入一个Slave 的磁盘。这意味着对于每一个连接,最多只有一个事务会由于Master崩溃而丢失。重要的是要明白半同步复制补丁没有暂停提交事务,它只是在事务已被写入到至少一个Slave的中继日志中之前,避免发送一个答复给客户端。

2022-12-30 11:36:53 948

原创 MySQL复制技术方案——异步复制配置

为MySQL服务器配置复制非常简单。但由于场景不同,基本的步骤还是有所差异。最基本的场景是新安装的主库和备库,总的来说分为以下几步。

2022-12-29 17:17:58 1063

原创 深入理解MySQL——分库分表种类与原则

拆分的标准很多,按用户的、按时间的、按用途的,不再一一举例。另一方面,Partitioning的结果受到MySQL实例,或者说MySQL单实例的数据文件无法分布式存储的限制,不管怎么分区,所有的数据还是都在一个服务器上,没办法通过水平扩展物理服务的方法把压力分摊出去。关于TEXT的拆分,这里多说一句,如果一个查询表里存在TEXT或BLOB字段,而且这个查询需要创建内部临时表的话,那它不能使用内存临时表,必须使用磁盘临时表,不然会对性能造成巨大影响,也会占用物理磁盘大量IO,最终导致性能剧烈下降。

2022-12-26 14:34:45 1750

原创 服务器硬件规格常用查看命令——HCA卡相关命令

使用不同厂商的InfiniBand设备,可能需要到不同厂商的官网下载相应的工具包, Matrox的HCA卡操作命令由infiniband-diags-1.6.5.MLNX20150902.0e83419-0.1.x86_64工具 包提供。由于这类工具的功能与厂商有关,且是针对特定设备的,所以未使用HCA设备的读者可跳过本节内容。使用ibstat命令可以打印从本地IB驱动程序获取的基本信息。输出信息包括LID、 SMLID、端口状态、链路带宽(协商速率)和端口物理状态等。

2022-12-26 09:56:11 1391

原创 服务器硬件规格常用查看命令——网卡相关命令

h–help:查看帮助信息。–version:查看版本信息。-a–show-pause:查看指定的网络设备以获取暂停参数信息。-c–show-coalesce:查看指定的网络设备以获取合并信息。-g–show-ring:查看指定的网络设备以获取rx/tx环形参数信息。-i–driver:查看指定的网络设备以获取驱动程序信息。-k–show-features --show-offload:查看指定的网络设备以了解协议卸载状态等信息。

2022-12-26 09:55:00 7661

原创 服务器硬件规格常用查看命令——磁盘相关命令

提示:使用该命令只能查看到裸盘设备的型号信息,如果是阵列卡,则只能看到阵列卡型号;如果是 PCIe Flash SSD设备,则可能不支持查看相关信息。(1)显示选项(由于本文不涉及SMART技术的深入解读,所以这里只针对显示选项 进行介绍,如果读者有其他需求,请自行查看帮助手册)提示:如果I/O设备是阵列卡,则需要使用对应的磁盘阵列管理工具进行查看。提示:使用该命令只能查看到裸盘设备的型号信息,对于阵列卡设备只能看到阵列卡型号。使用lsscsi 命令可以列出所有SCSI设备(主机)及其属性。

2022-12-08 15:54:34 4008

原创 服务器硬件规格常用查看命令——CPU相关命令

使用lscpu 命令可以从sysfs和/proc/cpuinfo中收集CPU体系结构信息,并解析优化为易阅读的格式。该信息包括:CPU的线程、核心、套接字数量和非一致内存访问(NUMA)节点的数量,以及CPU缓存、共享缓存、系列、型号等信息。

2022-12-08 15:54:10 4007

原创 服务器硬件规格常用查看命令——通用命令

使用dmidecode命令可以读取/dev/mem二进制文件并进行解析,然后以人类可读的格式转储计算机的DMI(或者SMBIOS)表内容,该表中包含了系统硬件组件的描述,以及其他有用的信息(例如:BIOS序列号和版本信息)。如果将内核环形缓冲区的大小设置为大于默认 值,则表示可以查看整个内核环形缓冲区的内容(因为有足够的空间存放数据)。使用lshw命令还可以生成一个详尽的HTML格式文件,使用浏览器打开之后更容易查 看到设备型号信息(也更容易看出哪些网卡接口、磁盘分区是属于同一个设备的)。

2022-12-08 15:52:58 8860

原创 深入理解MySQL——理清访问权限控制系统

MySQL的mysql系统库提供了user、db、tables_priv、columns_priv、procs_priv、proxies_priv几个表,用于存放不同权限范围的用户账号相关数据,这些表共同组成了MySQL的访问权限控制系统。 MySQL访问权限控制系统的主要功能是对从给定主机连接到MySQL服务器的用户进行身份验证,并校验该用户在该服务器中的数据库对象访问权限(如SELECT、 INSERT、UPDATE和DELETE)。

2022-11-23 09:44:40 520

原创 深入理解MySQL——mysql库中表字段含义

我们先介绍mysql系统库中的权限系统表。 在mysql系统库中,MySQL访问权限系统表包含如下几个表。

2022-11-22 17:09:42 1996

原创 MySQL实践——MySQL中支持的字符集和排序规则

在 MySQL 中 utf8 是 utf8mb3 的别名,所以之后在 MySQL 中提到 utf8 就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情,那请使用 utf8mb4 。

2022-11-21 10:02:49 3195

原创 MySQL实践——查看谁在持有锁

trx_mysql_thread_id 这个事务的会话id了,我们可以通过trx_mysql_thread_id对应的sys.processlist表中的conn_id,来查看当前事务正在做什么事。这个表可以看到事物ID为1270714的事务处于等待状态,所以1270709事务持有排他锁,未释放,1270714事务在等待对方释放,所以就造成了阻塞现象。可以看到2个锁争用,锁模式都是排他锁,可以看到对应2个锁的锁ID及其对应的表;在会话2中开启事务,并执行删除语句,不提交事务。那么这2个锁,是谁阻塞谁呢?

2022-09-28 14:36:49 1122

原创 MySQL实践——MySQL Router安装与配置

MySQL Router安装与配置。

2022-08-04 22:05:42 1773

原创 深入理解MySQL——配置半同步复制

使用半同步复制要求master和slave都支持,所以master和slave都必须是MySQL5.5 或之后的版本而且启用了半同步复制。

2022-07-29 15:31:41 388

MySQL精选问答五百题,快来看看自己到哪层了,内含解析

本资源是腾讯大佬林晓斌专栏中精选的五百道MySQL题目,MySQL高阶必知必会。

2021-09-05

MySQL大佬姜承尧47完整课程笔记,进阶涨薪必看,内含MySQL配置文件

本资源为MySQL大佬姜承尧MySQL DBA实战进阶班课程笔记,本资源整理课程重点要点,资源内容规范清晰。

2021-08-04

linux0.11-1-master.rar

linux0.11源码里面有中文注释。linux内核完全注释根据linux0.11编写的。搭配内核设计的艺术2版,学习linux内核的神组合。学习内核建议从linux0.11看起,初始版本内容比较简单,但包含的都是内核的精髓。想要了解linux的框架、查看内设计思想的可以看看。

2021-06-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除