SQL服务器 - 实时和历史仪表读数形式表
问题描述:
我Apps服务使用Azure的SQL数据库大约15桌托管在Azure上: - assistances - 用户 - 事件日志时 等SQL服务器 - 实时和历史仪表读数形式表
目前我有15万左右记录,并在每日的基础上,我的数据库正在接收与新用户相关的约2000个新辅助。在我的应用程序中,我有一个cron,每隔1分钟就会对所有表进行大量操作(更新,插入等)。
现在我的目标是创造一些不错的仪表盘,这将显示管理员数据(如扶助之状态,扶助之数目的延迟等) - basicly从这些表中读取数据。它应该有可能按日期过滤(从 - 到日期) - 所以在最坏的情况下,很少有用户可以同时生成月份报告(约60k条记录)。我害怕直接在我的prod数据库上执行它,因为事实上,我已经cron正在进行很多操作,所以我担心锁定。
我的想法是: - SQL数据库仓库 - >最大的问题是它的成本。 - 复制到第二个数据库,它将用于查询仪表板的数据。 - 我不相信这个解决方案。 - 复制到noSQL数据库(仅推送重要信息)并将其用于仪表板源。 - 迄今为止我还没有这方面的经验。
你有没有建议什么是最好的?
答
最后,我用从Azure中,这是使用快照隔离的地理复制选项,所以这是伟大的!即使MS Azure也建议使用此地理复制数据库作为用于只读操作的第二个数据库!我测试过,工作大:)
由于只有150K记录(即微小的),我第一次尝试,并运行对主数据库使用快照隔离的查询(以尽量减少锁定在写路径)。如果这不起作用,我会尝试复制到第二个数据库。没有正确的答案。 – mjwills
使用其中一个命令行可执行文件将更有效地生成报告(https://docs.microsoft.com/zh-cn/sql/tools/command-prompt-utility-reference-database-engine)。您可以使用sqlcmd.exe以csv格式输出数据,然后将其导入到c#中。我有应用程序,我在C#中生成字符串查询,然后作为一个进程运行。这些命令行可执行文件旨在将数据库归档并运行比执行c#查询更有效。 – jdweng