组织MySQL数据库
我正在开发一个应用程序,需要我创建我的第一个大型MySQL数据库。我现在很难集中精力去思考如何最好地组织它。有没有人能推荐一些阅读材料,它们展示了为不同目的组织MySQL数据库的不同方法组织MySQL数据库,mysql,database,organization,Mysql,Database,Organization,我正在开发一个应用程序,需要我创建我的第一个大型MySQL数据库。我现在很难集中精力去思考如何最好地组织它。有没有人能推荐一些阅读材料,它们展示了为不同目的组织MySQL数据库的不同方法 我不想尝试深入了解我所想象的数据库主要组件的细节,因为我不相信我能清楚地表达出来,在这一点上会有所帮助。这就是为什么我正在寻找一些关于MySQL数据库组织的一般资源。也许我可以根据自己的经验提供一些建议 除非有非常特殊的用法(如全文索引),否则请使用InnoDB表引擎(事务、行锁定等) 指定默认编码-utf8
我不想尝试深入了解我所想象的数据库主要组件的细节,因为我不相信我能清楚地表达出来,在这一点上会有所帮助。这就是为什么我正在寻找一些关于MySQL数据库组织的一般资源。也许我可以根据自己的经验提供一些建议
- 除非有非常特殊的用法(如全文索引),否则请使用InnoDB表引擎(事务、行锁定等)
- 指定默认编码-
通常是一个不错的选择utf8
- 微调服务器参数(*key_buffer*等…网络上的大量资料)
- 手工绘制DB方案,与同事和程序员讨论
- 定义数据类型不仅基于程序使用情况,还基于连接查询(如果类型相同,则速度更快)
- 根据预期的必要查询创建索引,这也将与程序员讨论
- 计划备份解决方案(基于数据库复制或脚本等)
- 用户管理和访问,仅授予必要的访问权限,并创建一个只读用户,供大多数不需要写访问权限的查询使用
- 定义服务器规模、磁盘(raid?)、内存和CPU
这里还有使用和创建数据库的方法。我可以向您推荐本书的第一章:,它可以帮助您组织您的想法,我当然建议不要使用第五范式,而是使用第四范式,这非常重要。我学会的解决这些问题的方法是停止并建立关联 在更多的面向对象语言中(我假设您使用的是PHP?),这会迫使您快速思考OO,这正是您所追求的 我的工作流程如下:
- 每个客户只有一个名字
- 每种产品都可以多次出售给任何人
- 每个订单只有一名销售人员和一名客户
这正是它的要点,如果你要求的话,我会从我的工作流程中为你扫描一张示例表。如果我只能给你一条建议,那就是生成与生产量相似的测试数据,并对主要查询进行基准测试 只需确保数据分布是真实的。(不是所有人都叫“约翰”,也不是所有人都有唯一的名字。不是所有人都给出自己的电话号码,大多数人也不会有10个电话号码)
另外,确保测试数据不适合RAM(除非您希望生产数据卷也适合RAM)。www.generateData.com非常适合生成电话号码、姓名等数据,而且非常灵活。