• ARTICLE
  • STRING
  • CONVERTER
  • ENCRYPT
  • NETWORK
  • MORE
    CHART
    MATH
    COORDINATE
    IMAGE
    FILE
  • ARTICLE
    STRING
    CONVERTER
    ENCRYPT
    NETWORK
    MORE
    CHART
    MATH
    COORDINATE
    IMAGE
    FILE
logo Online Tools
All Chinese English Newest Hottest
536 search results Contribute

Objective-C在函数hook的方案比较多,但通常只实现了函数切片,也就是对函数的调用前或调用后进行hook,这里介绍一种利用llvm pass进行静态插桩的另外一种思路,希望起到抛砖引玉的作用,拿来实现更多有意思的功能。

71 Technology lddgo Shared on 2022-09-06

InnoDB引擎支持行级别锁,实现了四种隔离级别,本文梳理了InnoDB事务系统及锁系统的原理和源码实现,并且对其中一些比较特别的feature做一个简单的介绍。 因为涉及的模块代码非常庞大,部分实现细节并未深入,如有错漏,欢迎指正。

69 Technology lddgo Shared on 2022-09-05

连接操作是一种数据库中最基本的操作,连接算法的执行效率直接影响到整个数据库的效率、吞吐和资源。通常商业数据库系统一般有三种主流的连接实现:Nested Loop Join、Hash Join和Sort Merge Join。本文概述目前主流的Hash Join实现方式,以及分析MySQL中Hash Join的实现方式。

76 Technology lddgo Shared on 2022-09-05

在MySQL5.6引入了GTID(Global Transaction Identifier)特性,它可以在集群中唯一标识一个事务,在MySQL主从复制时,从节点可以使用GTID来确定复制位点,用于取代使用binlog文件偏移量的传统方式,在发生主备切换时从节点可以自动在新主上找到正确的复制位置,大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制位点发生误操作的风险,另外,基于GTID的复制可以跳过已经执行过的事务,减少了数据发生不一致的风险。

50 Technology lddgo Shared on 2022-09-05

在之前的公众号文章《 slave crash unsafe常见问题分析》中提到slave的master_info_repository和relay_log_info_repository参数的某些配置可能导致crash unsafe,同时在该文章的末尾提到设置relay_log_recovery = on可以避免slave crash unsafe

64 Technology lddgo Shared on 2022-09-05

我们都知道,程序的运行离不开内存。很多人都有这种直接朴素的想法,内存越大程序的运行速度越快。对于数据库来说,如果数据都能加载到内存中,不需要从磁盘读取,那速度肯定是杠杠的。但是,对于现在的应用来说,几十GB乃至TB级别的数据,都是常见的情况,但内存多是十几GB。所以,内存就是就是珍贵的资源,要精打细算的使用,那么这次我们就探究一下和内存相关的知识。这些知识将从两个方面着手,一是操作系统方面,从该方面我们讲述内存在这个层面是怎么分布的;二是MySQL方面,从该方面我们了解在运行中MySQL的各个模块的内存申请情况。以及最后,这两方面结合看所产生的一些问题。本章,我们从操作系统来了解一下有哪些内存概念,以及通过一些实验来验证这些概念。

54 Technology lddgo Shared on 2022-09-05

本文主要讨论用户记录存储相关的数据页面(索引页和外部存储页)的物理结构以及组织方式。InnoDB用B+树的方式管理用户记录数据,每个索引对应一个B+树。B+树是通过索引页构建的,用户记录的数据存储在聚簇索引的叶子结点中。如果有变长字段(如text、blob、varchar)的长度过长,则可能会将该字段的全部数据或部分数据存储到外部存储页(blob页面)。

59 Technology lddgo Shared on 2022-09-05

最近我们发现在Read Committed隔离级别下出现了S类型的Gap锁参与的死锁告警。 本身RC隔离级别上出现Gap锁就很诡异了,更诡异的是两条看起来完全不相干的SQL发生了死锁。让我们一起来分析一下吧。

66 Technology lddgo Shared on 2022-09-05

在之前的公众号文章《GTID实践和分析》中介绍了GTID的基本原理,MySQL主要通过Server引擎的binlog文件和Innodb的mysql.gtid_executed表来持久化GTID集合信息。在提交时会将分配给事务的GTID刷到binlog文件中,在事务成功提交后会将GTID加入内存的executed_gtids集合中,并周期性持久化到mysql.gtid_executed表中。在实例恢复时可以从mysql.gtid_executed表+最后一个binlog文件中的GTID信息来恢复executed_gtids集合,从而保证GTID的完整性。

58 Technology lddgo Shared on 2022-09-05

2022 年 3 月,广大人民期盼已久的支持的泛型的 go1.18 发布了。但是目前基于泛型的容器实现还不多。我实现了一套类似 C++中 STL 的容器和算法库。其中有序的 Map 选择用跳表来实现,并优化到了相当好的性能。在此分享一下优化的思路和心得,供大家参考借鉴,如果发现有错误也欢迎指出。

76 Technology lddgo Shared on 2022-09-02