数据库
首页 > 数据库> > 拆分MySQL数据库

拆分MySQL数据库

作者:互联网

我对拆分数据库有疑问.这是有问题的查询:

SELECT COUNT(*) FROM monies.link_monies_new lcn '
         . 'INNER JOIN products.link l ON lcn.link_id = l.link_id '
         . 'INNER JOIN products.products_format af ON l.product_format_id = af.product_format_id '
         . 'INNER JOIN products.products_categories ac ON af.product_category_id = ac.product_category_id '
         . 'WHERE lcn.click_time BETWEEN FROM_UNIXTIME(1311721200) AND FROM_UNIXTIME(1311807600) '
         . 'AND ac.product_category_id = 1

问题在于,现在数据库的资金和产品将位于不同的服务器中.解决办法是什么?我需要两个查询吗?我有点迷路.

谢谢!

解决方法:

http://dev.mysql.com/doc/refman/5.0/en/federated-use.html

如果我正确理解了您的问题,则希望在两个数据库之间建立一个查询联接表,这些数据库将位于单独的服务器上.

假设您在“ monies”服务器上运行查询,则将在monies服务器上创建联邦表,指向“ products”服务器.这样,您的查询将继续起作用,MySQL神奇地管理了它们位于物理上分开的服务器上的事实.

性能调整可能会出现问题,但这是保持查询正常运行的最简单方法.

例如,您可以在“ monies”服务器上创建一个名为“ products”的本地数据库.在产品中,您将创建一个“链接”表:

CREATE TABLE link (
    link_id     INT(20) NOT NULL AUTO_INCREMENT,
    ....<<other columns from the link table>>
    PRIMARY KEY  (link_id)
)
ENGINE=FEDERATED

CONNECTION='mysql://fed_user@products_server:9306/products/link';

然后,您可以运行上面的查询,而无需进行任何更改.

标签:database-schema,multiple-databases,mysql,database
来源: https://codeday.me/bug/20191102/1990866.html