5 篇文章

Database

PostgreSQL数据库
 • 分类:Database, PostgreSQL • 标签:Database, PostgreSQL, PGVector

PostgreSQL 是一个开源的对象关系型数据库管理系统(ORDBMS)。它最初于1986年在加州大学伯克利分校作为 POSTGRES 项目启动,并于1996年更名为 PostgreSQL,以反映其对 SQL 标准的支持。

PostgreSQL基础

psql命令行工具

psql 是 PostgreSQL 的官方命令行交互式客户端工具。 提供了许多元命令和各种类似 shell 的功能,以方便编写脚本和自动化各种任务。

psql 通常作为 PostgreSQL 服务器或客户端软件包的一部分进行安装。

  • Debian/Ubuntu: sudo apt install postgresql-client
  • RHEL/CentOS: sudo dnf install postgresql
  • macOS (Homebrew): brew install libpq (然后可能需要链接 psql) 或 brew install postgresql
  • Windows: 通过官方的 EnterpriseDB 安装程序安装。

基本用法:

阅读更多 »
MySQL5.7内存异常
 • 分类:Database, MySQL • 标签:Database, MySQL, ulimit

MySQL5.7在compose部署时内存异常Bug

Bug 描述

在使用 Docker Compose(version v2.35.1) 部署 MySQL 5.7 时,发现我16G的内存几乎被耗尽,通过 docker stats命令查看,发现MySQL5.7对应的容器占用了几乎所有的内存。 尝试通过 docker run 来部署结果也一样 (docker version: 28.1.1)

不死心的我于是通过限制资源,在docker-compose.yml中添加了内存大小限制,内容如下:

yaml
    deploy:
      resources:
        limits:
          memory: 2G

但接下来问题更离谱了,MySQL5.7对应的容器甚至不能正常启动了,一直不断重启,通过 docker compose logs mysql57 查看日志,内容如下:

bash
mysql5_7  | 2025-05-20 14:56:41+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.32-1debian10 started.
mysql5_7  | 2025-05-20 14:56:43+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
mysql5_7  |     command was: mysqld --verbose --help

看起来似乎是因为配置文件的问题,但实际上并没有那么简单。在不联网搜索的情形下询问过多个大模型均不能给出正确答案,只有 Gemini 2.5 Pro 选中联网搜索时,找到了相关的信息。其实通过普通搜索引擎也能找到答案,不少人都遇到过类似的问题。

阅读更多 »
MySQL事务和锁监控
 • 分类:Database, MySQL • 标签:Database, MySQL, Locks, Transaction

MySQL事务和锁监控 | 锁的范围 | 死锁分析

MySQL事务和锁监控

information_schema 是 MySQL 提供的一个系统数据库,用于存储有关数据库结构和元数据的信息

sql
-- 显示当前所有活跃的 innodb 事务信息
select * from information_schema.innodb_trx;

performance_schema 是一个动态性能监控工具,在 8.0 版本中经历了一系列重要的改进和增强

sql
-- 显示所有前台线程的信息  查看事务事件
select * from performance_schema.threads where type = 'foreground';
--显示当前活动事务的状态信息
select * from performance_schema.events_transactions_current;

关于这两个系统数据库更多的信息参照:Information_SchemaPerformance Schema

阅读更多 »
mysqlbinlog
 • 分类:Database, MySQL • 标签:Database, MySQL, Binlog

mysqlbinlog | Binlog文件操作 | 数据恢复

Binlog文件操作

使用MySQL内部命令查看 Binlog 文件基本信息:

bash
show binary logs;    # 管理和监控所有的 binlog 文件, 等价于show master logs;

show master status;  # 仅显示当前正在使用的 binlog 文件及其状态信息

show binlog events;
show binlog events in 'mysql-binlog.000001'

Binlog文件记录了所有对数据库进行的更改操作,包括 DDL(数据定义语言)和 DML(数据操作语言)语句。这些更改以事件的形式存储在 binlog 文件中,每个事件称为一个 Log Event。 SHOW BINLOG EVENTS; 命令用于查看 binlog 文件中的这些事件。

阅读更多 »
MySQL数据库
 • 分类:Database, MySQL • 标签:Database, MySQL

MySQL数据库 | 起源和分支 | 应用架构演变

  • MySQL5.7文档:https://dev.mysql.com/doc/refman/5.7/en/

  • MySQL8文档:https://dev.mysql.com/doc/refman/8.4/en/

MySQL起源和发展

MySQL 是最流行的关系型数据库软件之一,由于其体积小、速度快、开源免费、简单易用、维护成本低,在集群架构中易于扩展、高可用,因此深受开发者和企业的欢迎。

MySQL发展历程

时间 事件
1979年 当时瑞典的 Monty Widenius 在 Tcx DataKonsult 公司工作,他开发了一款名为 Unireg 的工具,它是一个面向报表的存储引擎,利用索引顺序来读取数据,这也是 ISAM 存储引擎算法的前身。
1985年 Monty 和 David Axmart 等几个小伙子成立了一家公司 (MySQL AB 前身),研发出了 ISAM(Indexed Sequential Access Method) 存储引擎工具。
1990年 客户要求 ISAM 工具能提供 SQL 接口,于是 Monty 找到了 David Hughes(mSQL 的发明人) 商讨合作事宜,后来发现 mSQL 的速度也无法满足需求。于是 Monty 决心自己重写一个 SQL 支持,由此着手 MySQL 设计和研发。
1996年 Monty 与 David Axmart 一起协作,开发出 MySQL 第一个版本 1.0。
1996.10 MySQL 3.1 发布了,没有 2.x 版本。最开始只提供了 Solaris 下的二进制版本。同年 11 月发布了 Linux 版本。
1999-2000 Monty、Allan 和 David 三人在瑞典创建了 MySQL AB 公司,并且与 Sleepycat 合作开发出引入了 BDB 引擎,MySQL 从此开始支持事务处理了。
2000年 MySQL 公布了自己的源代码,并采用 GPL(GNU General Public License) 许可协议正式开源。
2000.04 MySQL 对旧的存储引擎 ISAM 进行了整理,命名为 MyISAM。
2001年 Heikki Tuuri 向 MySQL 建议集成他的 InnoDB 存储引擎,这个引擎同样支持事务处理,还支持行级锁。MySQL 与 InnoDB 正式结合版本是 4.0。至此 MySQL 已集成了 MyISAM 和 InnoDB 两种大主力引擎。
2005.10 MySQL 5.0 版本发布,这是 MySQL 历史上最有里程碑意义的一个版本,在 5.0 版本加入了游标、存储过程和触发器的支持。
2008.01 MySQL AB 公司被 Sun 公司以 10 亿美金收购,MySQL 数据库进入 Sun 时代。
2009.04 Oracle 公司以 74 亿美元收购 Sun 公司,自此 MySQL 数据库进入 Oracle 时代,而其第三方的存储引擎 InnoDB 早在 2005 年就被 Oracle 公司收购。
2010.04 发布了 MySQL 5.5 版本。Oracle 对 MySQL 版本重新进行了划分,分成了社区版和企业版。默认引擎更换为 InnoDB、增加表分区等。
2013.02 MySQL 5.6 首个正式版 5.6.10 发布。MySQL 5.6 对 InnoDB 引擎进行了改造,提供全文索引功能,使 InnoDB 适合各种应用场景。
2015.10 MySQL 5.7 首个 GA 正式版 5.7.9 发布。
2016.09 MySQL 8.0 首个开发版发布,增加了数据字典、账号权限角色表、InnoDB 增强、JSON 增强等等。
2018.04 MySQL 8.0 首个 GA 正式版 8.0.11 发布。

MySQL主流分支

MySQL从最初的1.0、3.1到后来的8.0,发生了各种各样的变化。

阅读更多 »