加载头像
MySQL中常见的慢查询与优化
01-16MySQL

MySQL中常见的慢查询与优化

没有将等值条件列用做组合索引前缀如果查询语句的谓词条件是范围条件与等值条件,存在组合索引,那么当范围条件列作为索引前缀的时候,等值条件是无法被range optimizer用来生成引擎扫描range减少扫描行数的。 索引列类型和常量类型不一致当索引列类型和常量类型不一致的时候,可能导致索引无法使用。例如下面的例子,列类型是varchar,而常量类型是Int。在MySQL中varchar类型和int类型比较是会将varchar转换为int类型去比较,这就导致下面语句需要扫描每一行数据将id转换为int类型再做比较。 关联字段类型不一致对于JOIN操作,如果关联字段类型不一样,比如一个是Int,一个是varchar,由于比较类型是Int,那么varchar字段的关联索引就无法用来生成REF访问,减少扫描行数。 关联字段字符集不一致对于JOIN操作,如果关联字段的字符集不一致,这也会导致索引无法被有效利用,进而导致扫描大量数据,查询执行慢。 索引列上有表达式计算当谓词条件中,索引列上有表达式计算的时候,优化器会无法分析抽取range range optimizer限制索引 ...
mysql"黑名单"
01-13MySQL

mysql"黑名单"

目的:使用iptables禁止121.43.122.130客户端连接140.143.94.243机器上部署的mysql 部署MySQL的机器 客户端 140.143.94.243 121.43.122.130 安装 iptables-services(若没装) 1yum install -y iptables-services 让 systemd 接管iptables 1systemctl start iptables 在部署MySQL机器上的filter表INPUT链里加一条DROP规则 1iptables -I INPUT -s 121.43.122.130 -p tcp --dport 3306 -j DROP 查看规则是否已插入 1iptables -nvL 验证 这种情况下端口不通 删除规则 1iptables -D INPUT -s 121.43.122.130 -p tcp --dport 3306 -j DROP 针对这类iptables禁用后使用wireshark分析抓包情况,可以看到tcp一直再重传
MySQL中的Got an error reading communication packet
01-10MySQL

MySQL中的Got an error reading communication packet

我们经常在MySQL的error log中可以看到这样的[Note],从官网的介绍来说,导致下述这种情况出现的原因,有下述几种 https://dev.mysql.com/doc/refman/8.0/en/communication-errors.html 另外我们要清楚,Got an error reading communication packets:是客户端异常关闭之后DB才会被动打印的日志,不是DB主动关闭的。所以首要排查方向应该是应用侧,非db侧。如果是客户端超过wait_timeout不活动被DB主动关闭的话,应该打印的日志是:Got timeout reading communication packets 场景分析客户端使用mycli和mysql分别去连接 mycli可以看到使用mycli连接后Aborted_clients 增加,并且错误日志中出现 [Note] [MY-010914] [Server] Aborted connection 9 to db: ‘unconnected’ user: ‘root’ host: ‘localhost’ (Got ...
MySQL【bug】- spatial key
01-09MySQL

MySQL【bug】- spatial key

【bug1】MySQL建Spatial索引的前提条件是列定义NOT NULL,而当location列中有**’GEOMETRYCOLLECTION EMPTY ‘的值时,这里‘GEOMETRYCOLLECTION EMPTY’**变相绕过了这个限制,会导致报错。 插入空集合 GEOMETRYCOLLECTION EMPTY,空集合占一行空间,语义上“我知道这里该有几何,但当前没有数据”。 与 NULL 的区别 场景 存储值 ST_IsEmpty ST_AsText NULL 无 NULL NULL GEOMETRYCOLLECTION EMPTY 有 1 GEOMETRYCOLLECTION EMPTY 重建表也无法进行修复 12345678910111213141516171819202122CREATE TABLE `spatial_table` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `location` geometry NOT NULL SRI ...
py_innodb_page_info.py表空间分析
01-04MySQL

py_innodb_page_info.py表空间分析

介绍由《MySQL技术内幕 InnoDB存储引擎》一书的作者姜承尧开发的 py_innodb_page_info.py 是一款功能强大的工具,旨在深入分析MySQL表空间中的页面类型及其详细信息。该工具采用Python编写,由三个文件组成:py_innodb_page_info.py、mylib.py 和 include.py。为了确保工具的正常运行,这三个文件需要放置在同一个目录下。 值得注意的是,该工具需要在Python 2的环境中运行。如果在Python 3环境下使用,可能会遇到兼容性问题,导致运行出错。此外,py_innodb_page_info.py 工具专门设计用于解析MySQL 5.7版本的.ibd文件。对于MySQL 8.0及更高版本的.ibd文件,该工具可能无法正确解析。 include.py12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include.py#encoding=utf-8INNODB_PAGE_SIZE = 1024 * 16 ...
PostgreSQL YUM安装
12-12PostgreSQL

PostgreSQL YUM安装

配置环境 Linux PostgreSQL Docker centos7 15 24.0.7 docker中的centos7中安装 选择对应的版本然后在容器中的centos7中执行下面命令 但是启动容器的时候需要注意 开启端口映射 开启特权模式 启动init进程 1docker run -itd --name centos-postgresql -p 5433:5432 --privileged=true centos:centos7 /usr/sbin/init 启动然后进入后先安装ibzstd.so.1依赖 12yum install epel-release.noarch -yyum install libzstd.x86_64 -y 安装PosqtgreSQL官网安装教程:https://www.postgresql.org/download/linux/redhat/ 安装完依赖后就可以按下面的顺序执行命令 12345yum install -y https://download.postgresql.org/pub/repos/yum/rep ...
从Miniflux 到 NextFlux:一步升级,拥抱现代化阅读体验
12-11技术分享RSS

从Miniflux 到 NextFlux:一步升级,拥抱现代化阅读体验

前段时间我部署了Miniflux,这是一款功能强大的极简主义RSS订阅器,它支持多平台同步、文章过滤和离线阅读等实用功能,完全满足了我的信息聚合需求;不过它的界面设计确实过于朴素,采用了最基础的列表布局和单调的配色方案,在这个视觉至上的时代里,这种毫不修饰的极简风格可能会让许多用户在初次接触时就失去耐心,随手划走转而选择那些界面更炫目、交互更花哨的阅读应用。 因此,为了弥补 Miniflux 在视觉和交互体验上的不足,我这次专门挑选了一款高颜值的第三方客户端 Nextflux。它不仅继承了 Miniflux 强大的 RSS 订阅和内容聚合功能,更通过现代化的界面设计、流畅的动画效果和直观的操作逻辑,大幅提升了用户的使用愉悦感。例如,Nextflux 支持暗黑模式与自定义主题,卡片式布局让信息浏览更加清晰高效,同时保留了 Miniflux 原有的离线阅读与全文抓取等核心能力,真正实现了功能与美感的平衡。 Nextflux 是一个基于现代化技术栈精心打造的 RSS 阅读器客户端,它专门为开源的Miniflux后端服务设计,完美融合了便捷性和功能性。该客户端采用前沿的React框架进行用户界 ...
使用pgcli实现PostgreSQL命令自动补全功能
12-11PostgreSQL

使用pgcli实现PostgreSQL命令自动补全功能

安装和配置python-3.9.0可以参考下述文章 使用mycli实现MySQL命令自动补全功能(Python-3.9.0) 下面我们直接来安装pgcli 1pip install pgcli 安装号后使用pgcli登陆的时候会发现有个报错 这里我们参考提示移动下这个文件的位置就好了 1mv /root/.pgclirc /root/.config/pgcli/ 然后登陆到postgres用户来登陆我们的postgresql 1234#登陆postgres用户su - postgres#登陆postgresql数据库pgcli
avatar
status
路漫漫其修远兮,吾将上下而求索
公告
更新随缘,像山中云来,像檐下鸟去。 你若来了,看到新的字句,那是偶然相逢的好意; 若没有,也无妨——
正在定位...
引用到评论
随便逛逛博客分类文章标签
复制地址关闭热评深色模式