当前位置:论坛首页 > 第三方应用 > Linux面板插件

dbcache mysql数据库加速插件

发表在 第三方应用2023-1-5 10:57 [复制链接] 16 13203

本帖最后由 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版本系统偶发缓存无法更新问题
- 优化缓存存储结构,通过数据离散存储,防止单一目录缓存文件数据过多降低数据处理能力




## 配置文件说明

  1. ;指定过期时间如在指定SQL 中添加
  2. ; -- [EXPIRE:10] -- 表示缓存10s
  3. ; -- [EXPIRE:-1] -- 表示不缓存
  4. ; -- [EXPIRE:0] -- 表示永不过期
  5. [src]
  6. ; 监听IP 设置为 127.0.0.1只允许本机访问
  7. ip=0.0.0.0
  8. ; 监听端口多个端口请使用,分割 如:33060,33061,33062  当服务器上 有多个库且同结构时开启避免缓存交叉,在应用连接串中使用不同端口进行连接
  9. port=33063,33064

  10. [desc]
  11. ; 数据库IP
  12. ip=127.0.0.1
  13. ; 数据库端口
  14. port=3306

  15. [connect]
  16. ;超时时间 建议设置为应用中查询需要的最大时间单位为秒
  17. timeout=2
  18. ;是否启用集群
  19. enablepool=0
  20. ; 是否启用白名单过滤
  21. enablefilter=0
  22. [lua]
  23. ; LUA脚本路径
  24. file=./luascript/script.lua
  25. ; 是否启用LUA
  26. enable=1
  27. ;脚本出错后是否禁用标本
  28. errorbreak=0

  29. ; 集群数据库,一行一台服务器 支持 IPV4/6 格式为 -=服务器ip:端口 优先级
  30. [pools]
  31. -=127.0.0.1:3306 1

  32. ; 允许访问白名单 all允许全部 支持 192.168.0.* 表示一个24网段
  33. [whitelist]
  34. -=127.0.0.1
  35. ;-=all

  36. [log]
  37. ; 日志存储路径
  38. path=./logs
  39. ; 是否启用日志
  40. enable=1
  41. ;日志级别 1 INFO 2 DEBUG 3 WARN 4 ERROR
  42. level=3

  43. [cache]
  44. ;缓存目录层级,建议为2
  45. path_levels=2
  46. ; 过期时间单位为秒
  47. expire=0
  48. ; 忽略SQL语句大小写
  49. ignorecase=1
  50. ; 数据包大小,建议在1024-10240之间
  51. packet_size=4096
  52. ;最大SQL大小,按字节计算
  53. max_sql_size=4096
  54. ;缓存目录
  55. path=./cache
  56. ;缓存数据后缀
  57. ext=frm
  58. ;缓存数据前缀
  59. prefix=rach
  60. ; 缓存方式 1 slices并发模式,2 once  1方式效率更高
  61. mode=2
  62. ;数据库包头长度,请不要轻易修改
  63. header_size=4
  64. ; 启用后支持

  65. ;此SQL语句时间根据此设定超期
  66. flag=1
  67. ; 开启调试
  68. debug=1
  69. ; 输出信息
  70. print=1
复制代码




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

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

单表1000万数据查询20数据.gif


相关配置界面

启动截图.png

相关配置.png

日志.png

启动服务.png

1.png









使用道具 举报 只看该作者 回复
发表于 2023-1-29 11:14:40 | 显示全部楼层
本帖最后由 RACH 于 2023-1-29 16:16 编辑

DbCache 1.0.1已发布新增特性

-支持LUA脚本
-集群支持
-白名单支持
-优化连接数量,提高缓存性能
使用道具 举报 回复 支持 反对
发表于 2023-2-15 11:54:16 | 显示全部楼层
本帖最后由 RACH 于 2023-2-22 11:28 编辑

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

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

再次安装即可
使用道具 举报 回复 支持 反对
发表于 2023-2-27 10:34:15 | 显示全部楼层

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

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

针对 ThinkPHP,YII,FastAdmin等  出现
  1. HY000
  2. 1243
  3. Unknown prepared statement handler (3) given to mysqld_stmt_execute
复制代码

错误,修改PDO属性
  1. $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
复制代码
即可

ThinkPhp  
  1. 在config/database.php  文件中 修改 ,params中调整为
  2. // 数据库连接参数
  3. 'params' => [PDO::ATTR_EMULATE_PREPARES=>true],
复制代码


FastAdmin
  1. 在application/database.php  文件中 修改 ,params中调整为
  2. // 数据库连接参数
  3. 'params' => [PDO::ATTR_EMULATE_PREPARES=>true],
复制代码

Laravel
  1. 在config/database.php  文件中 修改 ,options中调整为
  2. // 数据库连接参数
  3. 'options' => [PDO::ATTR_EMULATE_PREPARES=>true],
复制代码





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



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


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

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


使用道具 举报 回复 支持 反对
发表于 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/ 日志文件名 跟进查看
使用道具 举报 回复 支持 反对
发表于 2023-6-20 16:26:05 | 显示全部楼层
### dbcache 1.1.1 已更新上线
- 增加多端口支持,避免同数据库服务器异库同结构发生数据交叉
- 增加永久缓存支持,针对伪静态用户提供快捷静态化方案,大量长期不需要更新数据提供永久缓存支持
- 优化CPU资源占用,解决WIN版本系统偶发缓存无法更新问题
- 优化缓存存储结构,通过数据离散存储,防止单一目录缓存文件数据过多降低数据处理能力

如是老版本升级 ,新功能请参考文章配置文件进行配置
使用道具 举报 回复 支持 反对
发表于 2023-1-5 15:23:21 | 显示全部楼层
搜索不到啊 没这个插件
使用道具 举报 回复 支持 反对
发表于 2023-1-5 15:35:25 | 显示全部楼层
宝塔用户_fydezo 发表于 2023-1-5 15:23
搜索不到啊 没这个插件

还未提交市场,提交了会更新插件截图
使用道具 举报 回复 支持 反对
发表于 2023-1-8 00:27:27 | 显示全部楼层
宝塔用户_fydezo 发表于 2023-1-5 15:23
搜索不到啊 没这个插件

已经提交版本 官方正在审核中
使用道具 举报 回复 支持 反对
发表于 2023-1-11 12:36:23 | 显示全部楼层
本帖最后由 RACH 于 2023-1-12 11:01 编辑

插件已上架,需要的朋友请支持 ,使用中有问题可以 添加 交流群 913143887 解决问题
使用道具 举报 回复 支持 反对
发表于 2023-2-22 10:16:41 | 显示全部楼层
centos8安装不到
使用道具 举报 回复 支持 反对
发表于 2023-2-22 16:51:08 | 显示全部楼层

yum install lua5.1 -y&ln -s /usr/lib64/liblua-5.1.so /usr/lib64/liblua5.1.so.0
使用道具 举报 回复 支持 反对
发表于 2023-4-10 11:10:55 | 显示全部楼层
安装后打开就死机, 什么都不动了,系统是阿里云的系统操作系统
Alibaba Cloud Linux 2.1903 LTS 64位 , 屏幕快照 2023-04-10 上午11.07.41.png 我的联系方式  QQ  3397699698
使用道具 举报 回复 支持 反对
发表于 2023-8-3 11:17:44 | 显示全部楼层
我有一个40多万的表,我模糊查询在未使用这个插件 查询是差不多4S ,但是我使用了这个插件 查询时间也是一样的,感觉没有效果,我是使用TP的框架  按照文档说的设置了'params' => [PDO::ATTR_EMULATE_PREPARES=>true],   配置文件没改动,启动之后 没有想象中的效果,
使用道具 举报 回复 支持 反对
发表于 2023-8-11 13:33:19 | 显示全部楼层
徐先森丶 发表于 2023-8-3 11:17
我有一个40多万的表,我模糊查询在未使用这个插件 查询是差不多4S ,但是我使用了这个插件 查询时间也是一 ...

插件的作用是缓存,不是优化查询时间
使用道具 举报 回复 支持 反对
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表