我正在考虑构建一个需要可扩展的商店解决方案。目前,它在多个国家/地区的商店(例如英国、美国、德国、丹麦、西班牙等)平均每天检索 1-2000 个订单,但该订单在两年内可能是这个数量的 10 倍。
我正在考虑使用单独的国家商店数据库来存储订单表,或者希望将所有这些数据库合并到一个订单表中。
如果所有订单都存在于一个具有全球 ID(自动编号)和国家 ID(例如 uk、de、dk 等)的表中,则每个国家/地区的订单也需要按顺序排列。所以本质上,我们必须有一个全球 ID 和一个国家订单 ID,国家订单 ID 仅对国家是连续的,例如
全球 ID = 1000,国家/地区 = 英国,国家/地区订单 ID = 1000
全球 ID = 1001,国家/地区 = DE,国家/地区订单 ID = 1000
全球 ID = 1002,国家/地区 = 德国,国家/地区订单 ID = 1001
全球 ID = 1003,国家/地区 = DE , 国家订单 ID = 1002
全球 ID = 1004, 国家 = 英国, 国家订单 ID = 1001
全局 ID 将由数据库生成,而不是我需要担心的事情。但我认为我必须进行查询才能获取基于当前国家/地区顺序的 ID+1 以查找下一个序列号。有两件事让我担心:1)查询时间,当表可能有数百万行数据并且我在写入之前进行读取,2)由于同时写入/读取而导致 ID 号冲突的可能性。
使用 MyISAM 表,可以在检索最后一个国家/地区订单 + 1 时锁定整个表,以防止 ID 号冲突。
我想知道是否有人知道更优雅的解决方案?
干杯,伊曼克