MySQL 与 SQL Server 结合使用时,负责管理这两个平台的 DBA 应考虑采用哪些最佳实践技巧?虽然不够详尽,但以下建议可帮助确保 DBA 尽可能高效地开展工作:
如果选择了正确的产品,数据库工具将大幅提升工作效率。除了 MySQL Workbench 外,许多第三方数据库工具现在都支持同时使用 MySQL 和 SQL Server,因此 DBA 应研究这些工具是否能够创造切实的收益。例如,Quest TOAD 能够节省时间,因此许多 DBA 选择在 SQL Server 中使用它。Quest 提供的 TOAD for MySQL 产品可以让习惯于 TOAD 界面的 DBA 轻松上手 MySQL。Embarcadero 的 DBArtisan 产品也是如此,它支持 SQL Server 和 MySQL,可用于管理这两个平台。当然,DBA 还可以使用数据库供应商提供的工具(例如 SQL Server Management Studio 产品,当然,Oracle 提供了 MySQL Workbench)。
习惯于让 SQL Server 自动处理任务的 SQL Server DBA 应采用同样的互补性 MySQL 特性,从而避免额外的管理工作。这包括让 InnoDB 表空间文件自动增长(这对应于启用 SQL Server 数据和日志文件的自动增长属性)、设置 MySQL 二进制日志以进行时间点恢复(这对应于在 SQL Server 中使用完全恢复模式),等等。
与 SQL Server 中一样,分配大量内存可帮助 MySQL 提升性能,因此应根据所采用的底层引擎,确保提供足够的 RAM 来支持从内存中访问数据(而不是从磁盘中读取数据),因为 MySQL 为大多数企业应用提供的默认值都太低了。与 SQL Server 中一样,应意识到始终从 RAM 中读取数据并不代表实际的 SQL 代码效率很高。不必要的逻辑 I/O 也会像物理 I/O 那样影响性能。
MySQL 中的簇索引与 SQL Server 中的簇索引略有不同,具体表现在:
o 簇索引仅适用于 InnoDB 存储引擎,因此建议使用 Innodb 处理所有转换后的表。
o 簇索引必须基于表的主键构建。
o 如果 InnoDB 表中未明确定义簇索引,MySQL 将自动基于主键、某个唯一键(如果没有主键)或某个内部行标识符(如果表中没有唯一性约束)创建一个簇索引。
与 SQL Server 不同,MySQL 中的分区功能不需要创建分区函数或分区方案。而是在表的创建 DDL 中定义分区和分区类型(范围、散列、键、列表、组合)。
与 SQL Server 2005 及更高版本不同,MySQL 自动启用“快照读取”(这样,读取程序不会阻塞写入程序,反之亦然),无需设置数据库选项或在 SQL 语句前通过特殊的命令来确保快照隔离读取。
由于效率低下的 SQL 会对 MySQL 数据库造成严重的负面影响,所以 MySQL DBA 应从一开始就启用慢日志,以便捕获调优效果欠佳的 SQL 代码并定期查看日志结果。此外,用户还可以查看 MySQL Workbench 性能视图,或者通过利用 MySQL Performance Schema 的 MySQL Enterprise Monitor 获取更详细的信息。在 MySQL 中,用户可以设置慢日志或通用日志对 SQL Server 动态管理视图或 SQL Profiler 工具中的结果进行镜像,以便找到有问题的 SQL 代码。可以通过 SQL 查询 MySQL 提供的 SQL 性能表,获取效率低下的代码指标。根据其他性能监视建议,还可以使用 MySQL SHOW GLOBAL STATUS 和 SHOW INNODB STATUS 命令分析原始 MySQL 性能指标。包含 Query Analyzer 的 MySQL Enterprise Monitor 提供了一些更高级的监视和建议功能,DBA 在大多数部署了 MySQL 的生产环境中都应使用该工具。
MySQL DBA 应使用 SQL Server 错误/通知日志检查计划来检查 MySQL 错误日志,从而避免任何可能的异常行为。
习惯使用 SQL Server Agent 调度和执行 SQL/T-SQL 作业的 DBA 可以利用 MySQL 中的事件调度器完成同样的任务。
其生产应用需要持续监视的 DBA 应评估 MySQL 企业版,这是因为这个经过认证的软件可提供高可靠性,而内置的软件升级和监视/咨询工具则有助于主动保证正常运行并协助诊断和解决性能问题。