Я смотрю на создание торгового решения, которое необходимо масштабировать. В настоящее время он извлекает 1-2000 заказов в среднем за день в разных страновых магазинах (например, uk, us, de, dk, es и т. Д.), Но этот порядок может составлять в 10 раз эту сумму через два года.таблица заказов с несколькими магазинами и порядковые номера заказов на основе магазина
Я рассматриваю либо использование отдельных баз данных в национальных магазинах для хранения таблиц заказов, либо поиск комбинирования всех в одну таблицу заказов.
Если все заказы существуют в одной таблице с глобальным идентификатором (auto num) и идентификатором страны (например, uk, de, dk и т. Д.), В каждом заказе стран также должен быть последовательный заказ. Таким образом, по сути, мы должны иметь глобальный идентификатор и идентификатор заказа на страну, причем идентификатор странного заказа является последовательным только для стран, например.
глобальный ID = 1000, страна = Великобритания, заказ страны ID = 1000
глобального ID = 1001, страна = DE, страна заказа ID = 1000
глобального ID = 1002, страна = DE, заказ страны ID = 1001
глобальный ID = 1003, страна = DE, заказ страна ID = 1002
глобальный ID = 1004, страна = Великобритания, заказ страна ID = 1001
глобального ID будет DB генерируется и не то, что я должен был бы беспокоюсь о. Но я думаю, что мне нужно будет сделать запрос, чтобы получить текущий идентификатор страны на основе идентификатора + 1, чтобы найти следующий порядковый номер. Меня интересуют две вещи: 1) время запроса, когда таблица имеет потенциально миллионы строк данных, и я делаю чтение перед записью, 2) вероятность столкновения идентификационных номеров из-за одновременной записи/чтения.
С таблицей MyISAM вся таблица может быть заблокирована, в то время как последний заказ страны + 1 извлекается для предотвращения столкновений идентификационных номеров.
Мне интересно, знает ли кто-нибудь о более элегантном решении?
Приветствия, imanc