RACH 发表于 2023-1-5 10:57:36

dbcache mysql数据库加速插件

本帖最后由 RACH 于 2023-6-15 11:26 编辑

DbCache
## 版本
1.0## BT插件交流QQ群:913143887
## 开发语言
    golang+python
## 功能描述
用于加速Mysql数据库缓存加速,通过synbench压力测试结果,*均耗费时间是未加速的0.01
极大减少数据库并发压力
## 已经支持功能
- 数据库加速
- 数据库连接优化
- 自定义包大小,不同业务缓存时长控制,是否缓存控制
- 多服务器集群支持

## 待开发功能
- SQL注入拦截
- 脚本支持
## 优势
使用dbcache 可以快速解决高并发,及复杂SQL语句查询来来的数据库层面压力,提升动态业务响应能力
您配置好服务后,对于业务使用只需要修改下端口即可获得能力提升

## 后续发展
有一定用户保有量后,考虑开源,现行服务提供方式 宝塔面板插件 搜索 "dbcache"
## 更新
### dbcache 1.1.1
- 增加多端口支持,避免同数据库服务器异库同结构发生数据交叉
- 增加永久缓存支持,针对伪静态用户提供快捷静态化方案,大量长期不需要更新数据提供永久缓存支持
- 优化CPU资源占用,解决WIN版本系统偶发缓存无法更新问题
- 优化缓存存储结构,通过数据离散存储,防止单一目录缓存文件数据过多降低数据处理能力




## 配置文件说明

;指定过期时间如在指定SQL 中添加
; -- -- 表示缓存10s
; -- -- 表示不缓存
; -- -- 表示永不过期

; 监听IP 设置为 127.0.0.1只允许本机访问
ip=0.0.0.0
; 监听端口多个端口请使用,分割 如:33060,33061,33062当服务器上 有多个库且同结构时开启避免缓存交叉,在应用连接串中使用不同端口进行连接
port=33063,33064


; 数据库IP
ip=127.0.0.1
; 数据库端口
port=3306


;超时时间 建议设置为应用中查询需要的最大时间单位为秒
timeout=2
;是否启用集群
enablepool=0
; 是否启用白名单过滤
enablefilter=0

; LUA脚本路径
file=./luascript/script.lua
; 是否启用LUA
enable=1
;脚本出错后是否禁用标本
errorbreak=0

; 集群数据库,一行一台服务器 支持 IPV4/6 格式为 -=服务器ip:端口 优先级

-=127.0.0.1:3306 1

; 允许访问白名单 all允许全部 支持 192.168.0.* 表示一个24网段

-=127.0.0.1
;-=all


; 日志存储路径
path=./logs
; 是否启用日志
enable=1
;日志级别 1 INFO 2 DEBUG 3 WARN 4 ERROR
level=3


;缓存目录层级,建议为2
path_levels=2
; 过期时间单位为秒
expire=0
; 忽略SQL语句大小写
ignorecase=1
; 数据包大小,建议在1024-10240之间
packet_size=4096
;最大SQL大小,按字节计算
max_sql_size=4096
;缓存目录
path=./cache
;缓存数据后缀
ext=frm
;缓存数据前缀
prefix=rach
; 缓存方式 1 slices并发模式,2 once1方式效率更高
mode=2
;数据库包头长度,请不要轻易修改
header_size=4
; 启用后支持

;此SQL语句时间根据此设定超期
flag=1
; 开启调试
debug=1
; 输出信息
print=1




无限循环执行 复杂SQL like联表查询 30000条数据效果


单表1000万数据查询20万数据效果




相关配置界面



















RACH 发表于 2023-1-29 11:14:40

本帖最后由 RACH 于 2023-1-29 16:16 编辑

DbCache 1.0.1已发布新增特性

-支持LUA脚本
-集群支持
-白名单支持
-优化连接数量,提高缓存性能

RACH 发表于 2023-2-15 11:54:16

本帖最后由 RACH 于 2023-2-22 11:28 编辑

针对 CentOS7无法安装服务情况可以 用以下方法修复在命令行中运行以下脚本

ln -s /usr/lib64/liblua-5.1.so /usr/lib64/liblua5.1.so.0
针对 CentOS8无法安装服务情况可以 用以下方法修复在命令行中运行以下脚本
yum install lua5.1 -y&ln -s /usr/lib64/liblua-5.1.so /usr/lib64/liblua5.1.so.0
再次安装即可

RACH 发表于 2023-2-27 10:34:15

dbcache Unknown prepared statement handler (3) ..错误处理

本帖最后由 RACH 于 2023-2-27 11:08 编辑

针对 ThinkPHP,YII,FastAdmin等出现
HY000
1243
Unknown prepared statement handler (3) given to mysqld_stmt_execute
错误,修改PDO属性
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);即可

ThinkPhp
在config/database.php文件中 修改 ,params中调整为
// 数据库连接参数
'params' => ,

FastAdmin
在application/database.php文件中 修改 ,params中调整为
// 数据库连接参数
'params' => ,
Laravel
在config/database.php文件中 修改 ,options中调整为
// 数据库连接参数
'options' => ,




如果框架或代码无法找到 ,可先搜索代码中 PDO::ATTR_EMULATE_PREPARES 位置,再将值 false修改为true解决



1、ATTR_EMULATE_PREPARES=true(默认)
含义:本地prepare
详细:prepare不发送,execute时发送完整的sql
优点:当代码里频繁prepare,prepare放在本地,减轻mysql服务器压力
缺点:sql注入需要自己防范
注意:会把数据库数据由int类型转成string,如果php跟object-c合作,可能有问题。需慎重!!!


2、ATTR_EMULATE_PREPARES=false
含义:服务端(mysql)prepare
详细:prepare时「query+占位符」发给服务端
优点:1、防sql注入;2、当代码里prepare少时性能更好
缺点:1、高并发,频繁prepare,会有性能问题;2、慢日志里是占位符

感谢 小桑子 对此错误提供的测试报告!


RACH 发表于 2023-3-10 11:26:46

本帖最后由 RACH 于 2023-3-10 11:30 编辑

host连接连接本机请使用 127.0.0.1

修改应用连接串 需要注意 localhost与127.0.0.1的区别

localhot的原理是不经网卡传输,不会受到网卡协议的限制。设置程序时本地服务用localhost,localhost不会解析成IP


使用localhost无法到达指定的dbcache端口具体业务是否生效可以查看 /www/server/dbcache/logs/目录下日志如:tial -f /www/server/dbcache/ 日志文件名 跟进查看

RACH 发表于 2023-6-20 16:26:05

### dbcache 1.1.1 已更新上线
- 增加多端口支持,避免同数据库服务器异库同结构发生数据交叉
- 增加永久缓存支持,针对伪静态用户提供快捷静态化方案,大量长期不需要更新数据提供永久缓存支持
- 优化CPU资源占用,解决WIN版本系统偶发缓存无法更新问题
- 优化缓存存储结构,通过数据离散存储,防止单一目录缓存文件数据过多降低数据处理能力

如是老版本升级 ,新功能请参考文章配置文件进行配置

宝塔用户_fydezo 发表于 2023-1-5 15:23:21

搜索不到啊 没这个插件

RACH 发表于 2023-1-5 15:35:25

宝塔用户_fydezo 发表于 2023-1-5 15:23
搜索不到啊 没这个插件

还未提交市场,提交了会更新插件截图

RACH 发表于 2023-1-8 00:27:27

宝塔用户_fydezo 发表于 2023-1-5 15:23
搜索不到啊 没这个插件

已经提交版本 官方正在审核中

RACH 发表于 2023-1-11 12:36:23

本帖最后由 RACH 于 2023-1-12 11:01 编辑

插件已上架,需要的朋友请支持 ,使用中有问题可以 添加 交流群 913143887 解决问题

Eden99 发表于 2023-2-22 10:16:41

centos8安装不到

RACH 发表于 2023-2-22 16:51:08

Eden99 发表于 2023-2-22 10:16
centos8安装不到

yum install lua5.1 -y&ln -s /usr/lib64/liblua-5.1.so /usr/lib64/liblua5.1.so.0

shidiao136 发表于 2023-4-10 11:10:55

安装后打开就死机, 什么都不动了,系统是阿里云的系统操作系统
Alibaba Cloud Linux 2.1903 LTS 64位 , 我的联系方式QQ3397699698

徐先森丶 发表于 2023-8-3 11:17:44

我有一个40多万的表,我模糊查询在未使用这个插件 查询是差不多4S ,但是我使用了这个插件 查询时间也是一样的,感觉没有效果,我是使用TP的框架按照文档说的设置了'params' => ,   配置文件没改动,启动之后 没有想象中的效果,

宝塔用户_qbqpab 发表于 2023-8-11 13:33:19

徐先森丶 发表于 2023-8-3 11:17
我有一个40多万的表,我模糊查询在未使用这个插件 查询是差不多4S ,但是我使用了这个插件 查询时间也是一 ...

插件的作用是缓存,不是优化查询时间
页: [1] 2
查看完整版本: dbcache mysql数据库加速插件