我是一名数据库初学者,第一次探索数据仓库。我已经完成了从我们的生产系统(MS SQL Server 2012)复制大量数据到我们的数据仓库(MySQL)的过程。
我遇到的问题是,ETL过程可用的软件/硬件资源不足以使用单个查询复制我的较大表中的所有数据(程序会耗尽内存并崩溃)。为了解决这个问题,我通过在表ID上使用取模运算符添加where子句,将这些表分成了12个块,因为这种方法快速且易于编写。
我现在想知道的是,这是否会影响我的数据仓库相对于原始数据库的性能。在旧的数据库中,数据大致按照时间顺序插入,但新的数据仓库情况不同。我对数据库引擎实际存储数据的方式了解不够,不知道这是否是一个问题。数据仓库上有与原始表格上一样的所有索引,但我不知道数据库引擎是否实际上会根据索引重新排列内存中的数据以使读取更快。我通过这种方式复制并插入数据,这样做是否有问题?
我遇到的问题是,ETL过程可用的软件/硬件资源不足以使用单个查询复制我的较大表中的所有数据(程序会耗尽内存并崩溃)。为了解决这个问题,我通过在表ID上使用取模运算符添加where子句,将这些表分成了12个块,因为这种方法快速且易于编写。
SELECT * FROM table WHERE table.tableID % 12 = 0;
SELECT * FROM table WHERE table.tableID % 12 = 1;
SELECT * FROM table WHERE table.tableID % 12 = 2;
etc.
我现在想知道的是,这是否会影响我的数据仓库相对于原始数据库的性能。在旧的数据库中,数据大致按照时间顺序插入,但新的数据仓库情况不同。我对数据库引擎实际存储数据的方式了解不够,不知道这是否是一个问题。数据仓库上有与原始表格上一样的所有索引,但我不知道数据库引擎是否实际上会根据索引重新排列内存中的数据以使读取更快。我通过这种方式复制并插入数据,这样做是否有问题?