diff --git a/app/Domains/Real/Jobs/MongoSyncJob.php b/app/Domains/Real/Jobs/MongoSyncJob.php index 1ea7defa..1ede4824 100644 --- a/app/Domains/Real/Jobs/MongoSyncJob.php +++ b/app/Domains/Real/Jobs/MongoSyncJob.php @@ -38,9 +38,6 @@ class MongoSyncJob implements ShouldQueue $this->page = $page; $this->limit = $limit; $this->utcDateTime = $utcDateTime; - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); } /** diff --git a/app/Domains/Virtual/Jobs/CardSyncJob.php b/app/Domains/Virtual/Jobs/CardSyncJob.php index a9dafa37..955eb618 100644 --- a/app/Domains/Virtual/Jobs/CardSyncJob.php +++ b/app/Domains/Virtual/Jobs/CardSyncJob.php @@ -40,9 +40,6 @@ class CardSyncJob implements ShouldQueue $this->page = $page; $this->limit = $limit; $this->maxId = $maxId; - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); } /** diff --git a/app/Domains/Virtual/Jobs/LogSyncJob.php b/app/Domains/Virtual/Jobs/LogSyncJob.php index d4d6111f..bf0e5e7b 100644 --- a/app/Domains/Virtual/Jobs/LogSyncJob.php +++ b/app/Domains/Virtual/Jobs/LogSyncJob.php @@ -64,9 +64,6 @@ class LogSyncJob implements ShouldQueue $this->page = $page; $this->limit = $limit; $this->maxId = $maxId; - set_time_limit(0); - ini_set('memory_limit', '4096m'); - ini_set('default_socket_timeout', -1); } /** @@ -131,7 +128,7 @@ class LogSyncJob implements ShouldQueue $counts = isset($relationArray[$k]) ? $relationArray[$k]['counts'] + 1 : 1; - $relationArray[] = [ + $relationArray[$k] = [ 'order_sn' => $sn, 'type' => $type, 'sim' => $value['sim'], @@ -175,7 +172,6 @@ class LogSyncJob implements ShouldQueue $builder->connection->insert($sql, Arr::flatten($array, 1)); } - } catch (\Exception $e) { DB::rollback(); Log::info("LogSyncJob ERROR #: maxId {$this->maxId} - page {$this->page}"); diff --git a/database/migrations/create_virtual_order_cards_table.pgsql b/database/migrations/create_virtual_order_cards_table.pgsql index a04c16e6..ca513750 100644 --- a/database/migrations/create_virtual_order_cards_table.pgsql +++ b/database/migrations/create_virtual_order_cards_table.pgsql @@ -1,9 +1,11 @@ +-- 创建序列 CREATE SEQUENCE IF NOT EXISTS "virtual_order_cards_partition_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1; +-- 创建主表 CREATE TABLE "virtual_order_cards_partition" ( "id" int4 NOT NULL DEFAULT nextval('virtual_order_cards_partition_id_seq'::regclass), "type" int2 NOT NULL DEFAULT 0, @@ -20,8 +22,10 @@ PARTITION BY "type" ); +-- 序列 ALTER SEQUENCE "virtual_order_cards_partition_id_seq" OWNED BY "virtual_order_cards_partition"."id"; +-- 备注 COMMENT ON COLUMN "virtual_order_cards_partition"."id" IS '关联表ID'; COMMENT ON COLUMN "virtual_order_cards_partition"."type" IS '订单类型(0:基础套餐 1:套餐续费 2:续费包 3:加油包 4:可选包 5:附加包)'; COMMENT ON COLUMN "virtual_order_cards_partition"."sim" IS 'SIM卡号'; @@ -31,21 +35,25 @@ COMMENT ON COLUMN "virtual_order_cards_partition"."package_id" IS '套餐ID'; COMMENT ON COLUMN "virtual_order_cards_partition"."counts" IS '数量'; COMMENT ON TABLE "virtual_order_cards_partition" IS 'VD卡关联套餐订单'; +-- 分区表 CREATE TABLE virtual_order_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (0); CREATE TABLE virtual_order_renewal_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (1); CREATE TABLE virtual_order_renewal_package_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (2); CREATE TABLE virtual_order_flows_package_cards PARTITION OF virtual_order_cards_partition FOR VALUES IN (3); +-- 唯一索引 CREATE UNIQUE INDEX "virtual_order_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); -CREATE UNIQUE INDEX "virtual_order_renewal_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); -CREATE UNIQUE INDEX "virtual_order_renewal_package_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); -CREATE UNIQUE INDEX "virtual_order_flows_package_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); +CREATE UNIQUE INDEX "virtual_order_renewal_cards_order_id_sim_deleted_at_unique" ON "virtual_order_renewal_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); +CREATE UNIQUE INDEX "virtual_order_renewal_package_cards_order_id_sim_deleted_at_unique" ON "virtual_order_renewal_package_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); +CREATE UNIQUE INDEX "virtual_order_flows_package_cards_order_id_sim_deleted_at_unique" ON "virtual_order_flows_package_cards" (order_id, sim, COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp)); +-- 服务周期索引 CREATE INDEX "virtual_order_cards_timelines_index" ON "virtual_order_cards" USING GIN (timelines_array(sim)); CREATE INDEX "virtual_order_renewal_cards_timelines_index" ON "virtual_order_renewal_cards" USING GIN (timelines_array(sim)); CREATE INDEX "virtual_order_renewal_package_cards_timelines_index" ON "virtual_order_renewal_package_cards" USING GIN (timelines_array(sim)); CREATE INDEX "virtual_order_flows_package_cards_index" ON "virtual_order_flows_package_cards" USING GIN (timelines_array(sim)); +-- 增删改卡表时更新索引 CREATE OR REPLACE FUNCTION REINDEX_TIMELINES () RETURNS TRIGGER AS $$ @@ -71,3 +79,11 @@ OR DELETE ON cards FOR EACH ROW EXECUTE PROCEDURE REINDEX_TIMELINES (); + +-- 优化多核心建立索引 +ALTER TABLE virtual_order_cards SET (parallel_workers = 4); +ALTER TABLE virtual_order_renewal_cards SET (parallel_workers = 4); +ALTER TABLE virtual_order_renewal_package_cards SET (parallel_workers = 4); +ALTER TABLE virtual_order_flows_package_cards SET (parallel_workers = 4); +SET max_parallel_maintenance_workers TO 4; +SET maintenance_work_mem TO '2GB';