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 16:16 编辑
DbCache 1.0.1已发布新增特性
-支持LUA脚本
-集群支持
-白名单支持
-优化连接数量,提高缓存性能
本帖最后由 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
再次安装即可
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: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/ 日志文件名 跟进查看
### dbcache 1.1.1 已更新上线
- 增加多端口支持,避免同数据库服务器异库同结构发生数据交叉
- 增加永久缓存支持,针对伪静态用户提供快捷静态化方案,大量长期不需要更新数据提供永久缓存支持
- 优化CPU资源占用,解决WIN版本系统偶发缓存无法更新问题
- 优化缓存存储结构,通过数据离散存储,防止单一目录缓存文件数据过多降低数据处理能力
如是老版本升级 ,新功能请参考文章配置文件进行配置 搜索不到啊 没这个插件 宝塔用户_fydezo 发表于 2023-1-5 15:23
搜索不到啊 没这个插件
还未提交市场,提交了会更新插件截图 宝塔用户_fydezo 发表于 2023-1-5 15:23
搜索不到啊 没这个插件
已经提交版本 官方正在审核中 本帖最后由 RACH 于 2023-1-12 11:01 编辑
插件已上架,需要的朋友请支持 ,使用中有问题可以 添加 交流群 913143887 解决问题 centos8安装不到 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 安装后打开就死机, 什么都不动了,系统是阿里云的系统操作系统
Alibaba Cloud Linux 2.1903 LTS 64位 , 我的联系方式QQ3397699698 我有一个40多万的表,我模糊查询在未使用这个插件 查询是差不多4S ,但是我使用了这个插件 查询时间也是一样的,感觉没有效果,我是使用TP的框架按照文档说的设置了'params' => , 配置文件没改动,启动之后 没有想象中的效果, 徐先森丶 发表于 2023-8-3 11:17
我有一个40多万的表,我模糊查询在未使用这个插件 查询是差不多4S ,但是我使用了这个插件 查询时间也是一 ...
插件的作用是缓存,不是优化查询时间
页:
[1]
2