mysql - 如何提高数据库模式创建的性能?

标签 mysql database

对于我们的测试环境,我需要多次设置和拆除数据库(每个测试都应该独立于任何其他测试运行)。

过程如下:

  • 创建数据库模式并插入必要的数据
  • 运行测试 1
  • 删除数据库中的所有表
  • 创建数据库模式并插入必要的数据
  • 运行测试 2
  • 删除数据库中的所有表
  • ...

测试用例中的每个测试的模式和数据都是相同的。

基本上,这是有效的。最大的问题是,数据库的创建和清除需要很长时间。有没有可能提高mysql建表和插入数据的性能?或者您能想到一个不同的测试过程吗?

感谢您的帮助!

最佳答案

优化逻辑设计

逻辑层是关于查询和表本身的结构。首先尝试最大化它。目标是在逻辑级别访问尽可能少的数据。

  • 拥有最高效的 SQL 查询
  • 设计支持应用程序需求的逻辑模式(例如列的类型等)
  • 设计权衡以更好地支持某些用例
  • 关系约束
  • 规范化

优化物理设计

物理层处理非逻辑的考虑,比如索引的类型,表的参数等。目标是优化IO,这一直是瓶颈。调整每个表以满足它的需要。可以将小表永久加载到 DBMS 缓存中,写入率低的表可以与更新率高的表有不同的设置以占用更少的磁盘空间等。根据查询,可以使用不同的索引等。您可以使用物化 View 等透明地非规范化数据。

  • 表参数(分配大小等)
  • 索引(组合、类型等)
  • 系统级参数(缓存大小等)
  • 分区
  • 反规范化

首先尝试改进逻辑设计,然后是物理设计。 (然而两者之间的界限是模糊的,所以我们可以争论我的分类)。

优化维护

必须正确操作数据库才能尽可能保持高效。这包括一些可能会影响性能的维护任务,例如

  • 保持最新的统计数据
  • 定期对关键表重新排序
  • 磁盘维护
  • 所有系统的东西都有一个摇滚的服务器

来源:How to increase the performance of a Database?

关于mysql - 如何提高数据库模式创建的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23084430/

相关文章:

php - 想要添加一列并最终显示结果?

java - 在java中从文件夹ID和父ID创建文件夹

database - 数据库之间的数据传输测量

mysql - 如何从MySQL中提取列名和类型?

sql - 我如何执行此 SQL 查询

mysql - 使用 FORMAT 更改日期格式

mysql - 试图返回父记录的所有子记录列

html - 使用 PHP 将 HTML 表单数据插入 MySQL 数据库

javascript - PHP/HTML 将表格导出为 pdf?

python - 创建表条目 "A"时,SQLAlchemy 自动在表 "B"中创建条目