• 分类: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 安装程序安装。
基本用法:
阅读更多 »
• 分类: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
中添加了内存大小限制,内容如下:
deploy:
resources:
limits:
memory: 2G
但接下来问题更离谱了,MySQL5.7对应的容器甚至不能正常启动了,一直不断重启,通过 docker compose logs mysql57
查看日志,内容如下:
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 选中联网搜索时,找到了相关的信息。其实通过普通搜索引擎也能找到答案,不少人都遇到过类似的问题。
阅读更多 »
• 分类:Database, MySQL
• 标签:Database, MySQL, Locks, Transaction
MySQL事务和锁监控 | 锁的范围 | 死锁分析
MySQL事务和锁监控
information_schema
是 MySQL 提供的一个系统数据库,用于存储有关数据库结构和元数据的信息
-- 显示当前所有活跃的 innodb 事务信息
select * from information_schema.innodb_trx;
performance_schema
是一个动态性能监控工具,在 8.0 版本中经历了一系列重要的改进和增强
-- 显示所有前台线程的信息 查看事务事件
select * from performance_schema.threads where type = 'foreground';
--显示当前活动事务的状态信息
select * from performance_schema.events_transactions_current;
关于这两个系统数据库更多的信息参照:Information_Schema,Performance Schema
阅读更多 »
• 分类:Database, MySQL
• 标签:Database, MySQL, Binlog
mysqlbinlog | Binlog文件操作 | 数据恢复
Binlog文件操作
使用MySQL内部命令查看 Binlog 文件基本信息:
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 文件中的这些事件。
阅读更多 »
• 分类:Database, MySQL
• 标签:Database, MySQL
MySQL数据库 | 起源和分支 | 应用架构演变
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,发生了各种各样的变化。
阅读更多 »