このページは機械翻訳されています。英語の原文をお読みください。 English

IBSurgeon ライブラリ

Firebirdデータベースパフォーマンスチェックリスト(簡易版)

Windows

  1. 将电源计划设置为高性能(在 Windows Server 2016+ 上可提升 +20% 性能)?

  2. 将驱动器的写入缓存策略设置为“启用写入缓存”

  3. 如果使用 RAID,请检查是否安装了最新的驱动程序,并且 RAID 配置正确。

Linux

  1. Max Open Files 是否设置为 49999?使用 cat /proc/$(pgrep firebird)/limits 检查,默认值为 4096,如有必要请增大该值:在 Firebird 服务文件中设置 LimitNOFILE=49999

  2. 检查 VMA 数量 cat /proc/sys/vm/max_map_count,默认值为 64K,应设置为 250K:在 /etc/sysctl.conf 中添加一行 vm.max_map_count=250000

Firebird 配置(仅针对 Firebird 3 的建议)

  1. 确保不要使用默认的 DefaultDBCacheBuffers,这些值非常低(256 和 8K)!为 SuperClassic 设置为 1024,为 SuperServer 设置为 100K。不要在 Firebird 3 中使用 Classic,它速度较慢。

  2. 确保 DefaultDBCacheBuffers 未被数据库头中的设置覆盖:使用 gstat -h database -> Page Buffers 检查,该值应为 0。使用 gfix -buffers 0 将其设置为 0。

  3. 设置 FileSystemCacheThreshold =100M 以使用操作系统的文件缓存

  4. 对于 SuperServer,为 DefaultDBCacheBuffers 分配的内存应少于 RAM 的 30%。如果有很多数据库,请计算所有数据库所需的内存,并使用 databases.conf 分别配置它们。使用以下命令检查连接和数据库的总数:

fbsvcmgr.exe localhost:service_mgr user sysdba password masterkey info_svr_db_info

  1. 对于 SuperServer 和 SuperClassic,将 TempCacheLimit 设置为 RAM 的 25%,对于 Classic - 设置为 64M。

  2. 设置 LockMemSize=30M,这是一个良好的初始值,然后使用命令 fblockprint -d databasename 监控锁表的增长情况,如有必要则增大 LockMemSize

  3. 设置 LockHashSlots=20011,这是一个良好的初始值,在 lockprint 中监控 Hash Lengths

数据库

  1. 对于大于 50Gb 的数据库,请使用最大页面大小:16Kb(默认值为 8Kb),以优化读取 IO 和索引深度。在还原时使用“page”开关进行设置:gbak**-c -page 16384**

  2. 不要对非只读数据库使用 no_reserve 标志。使用 **gfix -**use reserve 将其移除

  3. 监控 gstat -h 中事务标记(OIT、OST、OAT、Next)之间的差异。

  4. (OST-OIT)值较大表示数据库中可能包含大量垃圾版本,需要执行清理。使用 gfix -sweep 安排在夜间执行显式清理

  5. (Next-OAT)值较大表示存在长时间活动的可写事务,该事务阻塞了垃圾回收。检查 MON$ 表以查看哪个应用程序保持事务打开状态,并修复该问题。

5 分钟测试以评估 Firebird 性能

使用开源的 INSERT-UPDATE_DELETE 脚本:www.ib-aid.com/dbtest目前,测试过的最快服务器显示每秒可插入 18140 条记录,您的结果会是多少?

如何超越这些简单调优来进一步提升 Firebird 性能?

尝试 IBSurgeon 的 Firebird 优化服务 www.ib-aid.com/perf:我们了解如何让您的 Firebird 运行得更快。