电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

DB2 V9.5工作負載管理之如何實現工作負載

瀏覽:6日期:2023-11-09 12:25:45

IBM DB2 V9.5 中,新引入的工作負載管理功能( WLM )可以幫助您標識、管理和監視數據服務器的工作負載。本文將通過示例介紹如何實現 DB2 V9.5 的工作負載管理( WLM )相關的功能。

工作負載(WORKLOAD)

工作負載( WORKLOAD )通過工作所在的數據庫連接屬性來標識數據庫活動。工作負載( WORKLOAD )是用來分配工作給服務類( Service Class )的方法,是一個根據工作的來源( source )標識區分工作的對象,以方便隨后對工作進行相應的管理。來源( source )是由工作所在的數據庫連接的屬性決定的。

當服務器收到多個用戶請求,首先將對用戶請求進行評估標識(此時處于 WLM 第一階段 標識階段),當其數據庫連接屬性符合某個已經定義的工作負載,則將其分配給特定工作負載所在的服務類中執行。如果不能和已經定義的工作負載相匹配,則將用戶請求分配給缺省用戶工作負載所在的缺省用戶服務類中執行。

當服務器收到系統請求時,將其分配給默認系統服務類中執行。

當服務器收到維護請求時,將其分配給默認維護服務類中執行。

默認系統服務類名為: SYSDEFAULTSYSTEMCLASS,其下有一個默認的服務子類: SYSDEFAULTSUBCLASS。

默認維護服務類名為:SYSDEFAULTMAINTENANCECLASS,其下有一個默認的服務子類:SYSDEFAULTSUBCLASS。

默認用戶服務類名為:SYSDEFAULTUSERCLASS,其下有一個默認的服務子類:SYSDEFAULTSUBCLASS。

圖 3 . 服務類和工作負載

DB2 V9.5工作負載管理之如何實現工作負載

接下來我們繼續在剛才的 DB2CLP 窗口發出 ALTER WORKLOAD 命令,使工作負載 WL_RHETTE 和 WL_DB2ADMIN 失效。然后發出 DROP WORKLOAD 命令,刪除工作負載 WL_RHETTE 和 WL_DB2ADMIN。最后發出 CREATE WORKLOAD 命令,創建工作負載工 WL_RHETTE 和 WL_DB2ADMIN。工作負載 WL_RHETTE 對應的服務子類是 subclass_rhette,對應的服務父類是 super_class。工作負載 WL_DB2ADMIN 對應的服務子類是 subclass_db2admin,對應的服務父類是 super_class。需要注意的是,如果你想刪除一個工作負載,那么必須先讓該工作負載失效。具體如清單8所示:

清單8 . 創建工作負載 WL_RHETTE 和 WL_DB2ADMIN

C:> db2 -tvf wl_create.sql

alter workload wl_rhette disable

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器命令。在

SQL 處理期間,它返回:

SQL0204N " WL_RHETTE " 是一個未定義的名稱。 SQLSTATE = 42704

alter workload wl_db2admin disable

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器命令。在

SQL 處理期間,它返回:

SQL0204N " WL_DB2ADMIN " 是一個未定義的名稱。 SQLSTATE = 42704

drop workload wl_rhette

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器命令。在

SQL 處理期間,它返回:

SQL0204N " WL_RHETTE " 是一個未定義的名稱。 SQLSTATE = 42704

drop workload wl_db2admin

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器命令。在

SQL 處理期間,它返回:

SQL0204N " WL_DB2ADMIN " 是一個未定義的名稱。 SQLSTATE = 42704

create workload wl_rhette session_user ( 'RHETTE' ) service class subclass_rhette

under super_class

DB20000I SQL命令成功完成。

create workload wl_db2admin session_user ( 'DB2ADMIN' ) service class subclass_db2

admin under super_class

DB20000I SQL命令成功完成。

命令成功完成,工作負載是通過工作所在的數據庫連接屬性來標識數據庫活動,數據庫連接的屬性可以是:

APPLNAME ( ' application - name ' , . . . )

為APPLNAME連接屬性指定一個或多個應用程序名稱。在列表中同一個應用程序名稱不能出現多次,否則會報 SQLSTATE 42713 錯誤。應用程序名稱是大小寫敏感的,應用程序名稱就是我們執行 LIST APPLICATIONS 命令顯示的值。

SYSTEM_USER ( ' authorization – name ' , . . . )

為 SYSTEM USER 連接屬性指定一個或多個授權 ID。在列表中同一個授權 ID 不能出現多次,否則會報 SQLSTATE 42713 錯誤。

SESSION_USER ( ' authorization – name ' , . . . )

為 SESSION USER 連接屬性指定一個或多個授權 ID。需要注意的是,授權 ID 大小寫敏感。在列表中同一個授權 ID 不能出現多次,否則會報 SQLSTATE 42713 錯誤。

SESSION_USER GROUP ( ' authorization – name ' , . . . )

為 SESSION_USER GROUP 連接屬性指定一個或多個授權 ID。在列表中同一個授權 ID 不能出現多次,否則會報 SQLSTATE 42713 錯誤。

SESSION_USER ROLE ( ' authorization – name ' , . . . )

為 SESSION_USER ROLE 連接屬性指定一個或多個授權 ID。這里會話授權ID的角色是指會話授權 ID 所有可用的角色,不管這些角色是怎么獲得的。在列表中同一個授權 ID 不能出現多次,否則會報 SQLSTATE 42713 錯誤。

CURRENT CLIENT_USERID ( ' user – id ' , . . . )

為 CURRENT CLIENT_USERID 連接屬性指定一個或多個客戶端用戶 ID。在列表中同一個客戶端用戶 ID 不能出現多次,否則會報 SQLSTATE 42713 錯誤。

CURRENT CLIENT_APPLNAME ( ' client – application – name ' , . . . )

為 CURRENT CLIENT_APPLNAME 連接屬性指定一個或多個應用程序名稱。在列表中同一個應用程序名稱不能出現多次,否則會報 SQLSTATE 42713 錯誤。這個 client – application – name 是大小寫敏感的,其值就是系統監控器輸出中的 " TP Monitor client application name " 值。

CURRENT CLIENT_WRKSTNNAME ( ' workstation – name ' , . . . )

為 CURRENT CLIENT_WRKSTNNAME 連接屬性指定一個或多個客戶端工作站名稱。在列表中同一個客戶端工作站名稱不能出現多次,否則會報 SQLSTATE 42713 錯誤。

CURRENT CLIENT_ACCTNG ( ' accounting – string ' , . . . )

為 CURRENT CLIENT_ACCTNG 連接屬性指定一個或多個 accounting string。在列表中同一個客戶端 accounting string 不能出現多次,否則會報 SQLSTATE 42713 錯誤。

如果想查看已經定義的工作負載,可以通過查看系統視圖 SYSCAT.WORKLOADS 的方式查看,也可以通過使用 DB2PD 工具進行查看,需要使用 DB2PD 工具的 workloads 選項。繼續在當前 DB2CLP 窗口中,發出 DB2P 命令,部分輸出信息如清單 9 所示:

清單9 . 查看工作負載的定義情況

C:> db2pd -workloads -db db2test1

Database Partition 0 - - Database DB2TEST1 - - Active - - Up 0 days 15:58:51

Workload Definition :

Address WorkloadID WorkloadName DBAccess

0x7E69F2E0 3 WL_RHETTE ALLOW

0x7E69F384 4 WL_DB2ADMIN ALLOW

0x7E69F428 1 SYSDEFAULTUSERWORKLOAD ALLOW

0x7E69F4C0 2 SYSDEFAULTADMWORKLOAD ALLOW

Usage Privilege Holders :

Address WorkloadID Type AuthID

0x7E687774 1 GROUP PUBLIC

Local Partition Workload Statistics :

Address WorkloadID WorkloadName NumWLO

0x7E6861C0 1 SYSDEFAULTUSERWORKLOAD 1

0x7E688D60 2 SYSDEFAULTADMWORKLOAD 0

0x7E69F150 3 WL_RHETTE 0

0x7E686070 4 WL_DB2ADMIN 0

我們也可以通過控制中心查看系統視圖 SYSCAT.WORKLOADS,來看一下我們創建的工作負載情況,具體如圖4所示:

對特定的工作負載(和一個特定的連接相關聯)來說,其會話用戶必須具有該工作負載的 USAGE 特權,如果想查看工作負載相關的 USAGE 特權,可以訪問系統視圖 SYSCAT.WORKLOADAUTH。我們繼續在當前的 DB2CLP 窗口中,發出 GRANT 命令,把工作負載 WL_RHETTE 和 WL_DB2ADMIN 的 USAGE 特權賦給 PUBLIC 組,具體如清單 10 所示:

清單 10 . 把工作負載 USAGE 權限分配給 PUBLIC 組

C:> db2 grant usage on workload WL_RHETTE to public

DB20000I SQL命令成功完成。

C:> db2 grant usage on workload WL_DB2ADMIN to public

DB20000I SQL命令成功完成。

下面我們來看一下數據庫連接、工作負載和服務類在具體的場景中是什么樣子。

首先,我們關閉當前的 DB2CLP 窗口,再打開三個新的 DB2CLP 窗口,這樣我們就有三個 DB2CLP 窗口,分別稱之為窗口1、窗口2、窗口3。在窗口1中,我們發出 DB2 CONNECT 命令,連上示例數據庫 DB2TEST1,用戶名為 admnistrator,具體如清單 11 所示:

清單11 . 在窗口 1 中使用 admnistrator 用戶連接數據庫

C:> db2 connect to db2test1 user administrator using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = ADMINIST . . .

本地數據庫別名 = DB2TEST1

命令成功完成,下面我們在窗口 2 中使用 RHETTE 用戶連接示例數據庫 DB2TEST1,并執行 SELECT 語句訪問示例表 PROJEC,做一個查詢量小的查詢(用 PROJECT 表外連接自己),具體如清單 12 所示:

清單 12 . 在窗口 2 中使用 RHETTE 用戶連接數據庫

C:> db2 connect to db2test1 user rhette using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = RHETTE

本地數據庫別名 = DB2TEST1

C:> db2 select count ( * ) from project , project , project

1

- - - - - - - - - - - - - - - - - - - - - - - - - -

8000

1 條記錄已選擇。

命令成功完成,下面我們在窗口 3 中用 DB2ADMIN 用戶連接示例數據庫 DB2TEST1,并執行 SELECT 語句訪問示例表 PROJEC,做一個查詢量小的查詢(用 PROJECT 表外連接自己),具體如清單 13 所示:

清單13 . 在窗口 2 中使用 DB2ADMIN 用戶連接數據庫

C:> db2 connect to db2test1 user db2admin using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = DB2ADMIN

本地數據庫別名 = DB2TEST1

C:> db2 select count ( * ) from rhette.project , rhette.project , rhette.project

1

- - - - - - - - - - - - - - - - - - - - - - - - - -

8000

1 條記錄已選擇。

命令執行成功,下面我們回到窗口 1,通過訪問表函數 wlm_get_service_class_workload_occurrences 來獲取當前發生的工作負載列表,在返回的結果集中,還將返回這些工作負載的一些相關信息,比如其所在的服務子類、服務父類等,具體如清單 14 所示:

清單14 . 在窗口 1 中查看當前發生的工作負載( workload )

C:>db2 select substr ( session_auth_id , 1 , 8 ) as user,

substr ( char ( application_handle ) , 1 , 7 ) as apphndl,

substr ( workload_name , 1 , 24 ) as workload_name ,

substr ( service_superclass_name , 1 , 19 ) as superclass_name ,

substr ( service_subclass_name , 1 , 18 ) as subclass_name ,

substr ( char ( workload_occurrence_id ) , 1 , 6 ) as wlo_id ,

uow_id from

table ( wlm_get_service_class_workload_occurrences ( cast ( null as varchar ( 128 ) ) ,

cast( nullas varchar ( 128 ) ) , -2 ) ) as scinfo

USER APPHNDL WORKLOAD_NAME SUPERCLASS_NAME

SUBCLASS_NAME WLO_ID UOW_ID

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ADMINIST 580 SYSDEFAULTUSERWORKLOAD SYSDEFAULTUSERCLASS

SYSDEFAULTSUBCLASS 1 2

RHETTE 599 WL_RHETTE SUPER_CLASS

SUBCLASS_RHETTE 1 2

DB2ADMIN 600 WL_DB2ADMIN SUPER_CLASS

SUBCLASS_DB2ADMIN 1 4

3條記錄已選擇。

命令成功完成,在返回結果中可以看到,當前存在 3 個工作負載。

窗口 1 中 ADMINISTRATOR 用戶所在的數據庫連接,對應的工作負載是系統默認用戶工作負載 SYSDEFAULTUSERWORKLOAD,默認用戶工作負載所對應的服務子類是默認用戶服務子類 SYSDEFAULTSUBCLASS,默認用戶工作負載所對應的服務子類是默認用戶服務父類 SYSDEFAULTUSERCLASS。

窗口 2 中 RHETTE 用戶所在的數據庫連接,對應的工作負載是我們開始的時候在清單 8 中定義的工作負載 WL_RHETTE,該工作負載所對應的服務子類是 SUBCLASS_RHETTE,該工作負載所對應的服務父類是 SUPER_CLASS。

窗口 3 中 DB2ADMIN 用戶所在的數據庫連接,對應的工作負載是我們開始的時候在清單 8 中定義的工作負載 WL_DB2ADMIN ,該工作負載所對應的服務子類是 SUBCLASS_DB2ADMIN,該工作負載所對應的服務父類是 SUPER_CLASS。

下面我看一下同樣的查詢在不同的工作負載下執行速度有什么樣的差別。大家還記得我們在清單 6 中定義的服務子類 SUBCLASS_RHETTE 和 SUBCLASS_DB2ADMIN,對其代理優先級(也就是使用 CPU 資源的優先級)做了不同的定義,服務子類 SUBCLASS_RHETTE 對應的代理優先級是 DEFAULT,服務子類 SUBCLASS_DB2ADMIN 的代理優先級是 6。

當服務子類的代理優先級設成 DEFAULT 時,服務子類繼承服務父類的進程優先級。也就是說服務子類 SUBCLASS_RHETTE 繼承服務父類 SUPER_CLASS 的代理優先級,而 SUPER_CLASS 的代理優先級也是 DEFAULT。當代理優先級設置為 DEFAULT 時,沒有特殊的操作發生,服務類中的代理將按照所有的 DB2 線程一樣的優先級進行調度。DEDAULT 對應的值是 -32768。

服務子類 SUBCLASS_DB2ADMIN 的代理優先級是 6,則意味這代理真正的優先級將是正常優先級加上 AGENT PRIORITY,并將在下次動作時生效。比如,如果正常的優先級是 20,并且我們把這個參數設置成 6,那么服務類中的代理的優先級是 20+6=26.

在 Windows 平臺,優先級為負值則意味著優先級低,所以服務子類 SUBCLASS_DB2ADMIN 的代理優先級比服務子類 SUBCLASS_RHETTE 高。

在窗口 1、2、3 中都斷開原有的數據庫連接。然后在窗口 2 中,使用 RHETTE 用戶連接示例數據庫 DB2TEST1,在窗口 3 中,使用 RHETTE 用戶連接示例數據庫 DB2TEST1,然后在兩個窗口中幾乎同時執行如下語句:

db2 select count ( * ) from rhette.project , rhette.project , rhette.project , rhette.project , rhette.project , rhette.project

可以發現窗口 2 和窗口 3 這條語句執行的時間也差不多。

但當我們在窗口 3 中用 DB2ADMIN 連接示例數據庫 DB2TEST1 時,還是執行剛才的 SELECT 語句,就會發現窗口 3 比窗口 2 快很多,這是因為 DB2ADMIN 用戶執行的語句所在的服務子類 SUBCLASS_DB2ADMIN 代理優先級高的原因。

如果想查看服務類或服務子類執行的次數,可以通過訪問表函數 WLM_GET_SERVICE_SUBCLASS_STATS 來查看,比如我們在窗口 1 中發出如下命令,具體如清單 15 所示:

清單15 . 在窗口 1 中查看服務類或服務子類執行的次數

C:> db2 select substr ( service_superclass_name , 1 , 19 ) as superclass_name ,

substr ( service_subclass_name , 1 , 18 ) as subclass_name ,

substr ( char ( dbpartitionnum ) , 1 , 4 ) as part , concurrent_act_top as acttop ,

coord_act_completed_total as completed from

table ( WLM_GET_SERVICE_SUBCLASS_STATS ( cast ( null as VARCHAR ( 128 ) ) ,

cast ( null as VARCHAR ( 128 ) ) , -2 ) ) as scstats order by superclass_name ,

subclass_name , part

SUPERCLASS_NAME SUBCLASS_NAME PART ACTTOP COMPLETED

- - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SUPER_CLASS SUBCLASS_DB2ADMIN 0 1 1

SUPER_CLASS SUBCLASS_RHETTE 0 1 4

SUPER_CLASS SYSDEFAULTSUBCLASS 0 0 0

SYSDEFAULTMAINTENAN SYSDEFAULTSUBCLASS 0 0 0

SYSDEFAULTSYSTEMCLA SYSDEFAULTSUBCLASS 0 0 0

SYSDEFAULTUSERCLASS SYSDEFAULTSUBCLASS 0 1 5

6 條記錄已選擇。

C:>

命令執行成功,關于表函數 WLM_GET_SERVICE_SUBCLASS_STATS 更多的信息可以查看 DB2 V9.5 信息中心。另外,還可以通過訪問表函數 WLM_GET_WORKLOAD_STATS 來查看多少工作負載完成、失敗或者被拒絕,比如我們在窗口 1 中發出如清單 16 所示的語句:

清單 16 . 在窗口 1 中查看工作負載的執行情況

C:> db2 select substr ( workload_name , 1 , 24 ) as wl_def_name,

concurrent_wlo_top as wlo_top, concurrent_wlo_act_top as wlo_act_top ,

int ( coord_act_completed_total ) as completed,

int ( coord_act_aborted_total ) as aborted,

int( coord_act_rejected_total ) as rejected

from table( WLM_GET_WORKLOAD_STATS ( cast ( null as varchar( 128 ) ) , -2 ) )

as wlstats order by wl_def_name

WL_DEF_NAME WLO_TOP WLO_ACT_TOP COMPLETED ABORTED REJECTED

- - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SYSDEFAULTADMWORKLOAD 0 0 0 0 0

SYSDEFAULTUSERWORKLOAD 1 1 6 0 0

WL_DB2ADMIN 1 1 1 2 0

WL_RHETTE 1 1 4 2 0

4 條記錄已選擇。

標簽: DB2 數據庫
相關文章:
主站蜘蛛池模板: 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 湖南自考_湖南自学考试网 | 北京亦庄厂房出租_经开区产业园招商信息平台| 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 哲力实业_专注汽车涂料汽车漆研发生产_汽车漆|修补油漆品牌厂家 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 浙江建筑资质代办_二级房建_市政_电力_安许_劳务资质办理公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | 润滑脂-高温润滑脂-轴承润滑脂-食品级润滑油-索科润滑油脂厂家 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 淘气堡_室内儿童乐园_户外无动力儿童游乐设备-高乐迪(北京) | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 |