Firebird 数据库性能快速检查清单
Windows
-
将节能计划设置为高性能(在 Windows Server 2016+ 上可提升 +20% 性能)?
-
将驱动器的写入缓存策略设置为“启用写入缓存”
-
如果使用 RAID,请检查是否安装了最新的驱动程序,并且 RAID 配置正确。
Linux
-
最大打开文件数是否设置为 49999?使用 cat /proc/$(pgrep firebird)/limits 检查,默认值为 4096,如有必要请增加:在 Firebird 服务文件中设置 LimitNOFILE=49999
-
检查 VMA 计数 cat /proc/sys/vm/max_map_count,默认值为 64K,应设置为 250K:在 /etc/sysctl.conf 中添加一行 vm.max_map_count=250000
Firebird 配置(仅针对 Firebird 3 的建议)
-
确保不要使用默认的 DefaultDBCacheBuffers,它们非常低(256 和 8K)!为 SuperClassic 设置为 1024,为 SuperServer 设置为 100K。不要在 Firebird 3 中使用 Classic,它速度较慢。
-
确保 DefaultDBCacheBuffers 未被数据库头覆盖:使用 gstat -h 数据库 -> Page Buffers 检查,它应为 0。使用 gfix -buffers 0 将其设置为 0。
-
设置 FileSystemCacheThreshold =100M 以使用操作系统的文件缓存
-
对于 SuperServer,为 DefaultDBCacheBuffers 分配的内存应少于 RAM 的 30%。如果有很多数据库,请计算所有数据库的内存,并使用 databases.conf 分别配置它们。使用以下命令检查总连接数和数据库数:
fbsvcmgr.exe localhost:service_mgr user sysdba password masterkey info_svr_db_info
-
对于 SuperServer 和 SuperClassic,将 TempCacheLimit 设置为 RAM 的 25%,对于 Classic - 设置为 64M。
-
设置 LockMemSize=30M,这是一个良好的初始值,然后使用命令 fblockprint -d databasename 监控锁表的增长情况,如有必要则增加 LockMemSize
-
设置 LockHashSlots=20011,这是一个良好的初始值,在 lockprint 中监控 Hash Lengths
数据库
-
对于大于 50Gb 的数据库,使用最大页面大小:16Kb(默认为 8Kb),以优化读取 IO 和索引深度。在恢复时使用开关“page”进行设置:gbak**-c -page 16384**
-
不要对非只读数据库使用 no_reserve 标志。使用 **gfix -**use reserve 将其移除
-
监控 gstat -h 中事务标记(OIT、OST、OAT、Next)之间的差异。
-
(OST-OIT)较大意味着数据库可能包含大量垃圾版本,需要执行清理。使用 gfix -sweep 安排在夜间执行显式清理
-
(Next-OAT)较大意味着存在长时间活动的可写事务,阻塞了垃圾回收。检查 MON$ 表,查看哪个应用程序持有该事务并保持打开状态,然后修复它。
5 分钟测试以评估 Firebird 性能
使用开源的 INSERT-UPDATE_DELETE 脚本:www.ib-aid.com/dbtest目前,测试过的最快服务器已显示每秒插入 18140 条记录,您的结果会是多少?
如何超越这些简单调优来进一步提升 Firebird 性能?
尝试 IBSurgeon 的 Firebird 优化服务 www.ib-aid.com/perf:我们知道如何让您的 Firebird 运行得更快。