日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Oracle Dedicated server 和 Shared server(專

系統(tǒng) 2479 0

一. 官網(wǎng)說明

在DBCA 建庫的時候,有提示讓我們選擇連接類型,這里有兩種類型:專用服務(wù)器模式和共享服務(wù)器模式。默認使用專用模式。如下圖:

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

Oracle 官方文檔對這兩種文檔的說明如下:

About Dedicated andShared Server Processes

http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/manproc001.htm

OracleDatabase creates server processes to handle the requests of user processesconnected to an instance. A server process can be either of the following:

(1)Adedicated server process, which services only one userprocess

(2)Ashared server process, which can service multiple userprocesses

Oracle 創(chuàng)建Server process 來處理user processes連接實例的的請求。 server process 分兩種: dedicated server process和 sharedserver process。

Yourdatabase is always enabled to allow dedicated server processes, but you mustspecifically configure and enableshared serverby setting one ormore initialization parameters.

1.1 Dedicated Server Processes

Figure4-1, "Oracle Database Dedicated Server Processes" illustrateshow dedicated server processes work. In this diagram two user processes areconnected to the database through dedicated server processes.

Ingeneral, it is better to be connected through adispatcherand use ashared server process. This is illustrated in Figure4-2, "Oracle Database Shared Server Processes" . A shared serverprocess can be more efficient because it keeps the number of processes requiredfor the running instance low.

Inthe following situations, however, users and administrators should explicitlyconnect to an instance using a dedicated server process:

在以上兩種情況,需要顯示的使用dedicated server process 去連接實例:

(1)To submit a batch job (for example, when a job can allow little orno idle time for the server process)

(2)To use Recovery Manager (RMAN) to back up, restore, or recover a database

Torequest a dedicated server connection when Oracle Database is configured forshared server, users must connect using a net service name that is configuredto use a dedicated server. Specifically, the net service name value shouldinclude theSERVER=DEDICATEDclause in the connect descriptor.

如果數(shù)據(jù)庫配置的是shared server,想要用dedicated server 去連接實例,就必須配置在net service name(tnsnames.ora)里指定SERVER=DEDICATED。


Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

Figure 4-1 OracleDatabase Dedicated Server Processes



1.2 Shared ServerProcesses

Consideran order entry system with dedicated server processes. A customer phones theorder desk and places an order, and the clerk taking the call enters the orderinto the database. For most of the transaction, the clerk is on the telephonetalking to the customer. A server process is not needed during this time, sothe server process dedicated to the clerk's user process remains idle. Thesystem is slower for other clerks entering orders, because the idle serverprocess is holding system resources.

Sharedserver architecture eliminates the need for a dedicated server process for eachconnection (see Figure4-2 ).

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

Figure 4-2 OracleDatabase Shared Server Processes



Ina shared server configuration, client user processes connect to a dispatcher.The dispatcher can support multiple client connections concurrently. Eachclient connection is bound to avirtual circuit, which is a piece ofshared memory used by the dispatcher for client database connection requestsand replies. The dispatcher places a virtual circuit on a common queue when arequest arrives.

Anidle shared server process picks up the virtual circuit from the common queue,services the request, and relinquishes the virtual circuit before attempting toretrieve another virtual circuit from the common queue. This approach enables a small pool of server processes to serve a largenumber of clients. A significant advantage of shared server architectureover the dedicated server model is the reduction of system resources, enablingthe support of an increased number of users.

Foreven better resource management, shared server can be configuredforconnection pooling. Connection pooling lets a dispatcher support moreusers by enabling the database server to time-out protocol connections and touse those connections to service an active session. Further, shared server canbe configured forsession multiplexing, which combines multiple sessionsfor transmission over a single network connection in order to conserve the operatingsystem's resources.

Sharedserver architecture requires Oracle Net Services. User processes targeting theshared server must connect through Oracle Net Services, even if they are on thesame machine as the Oracle Database instance.

二. 說明

2.1 Dedicated server 說明

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

對于專用服務(wù)器配置,在登錄時,Oracle 總會創(chuàng)建一個新的進程,這個服務(wù)器進程會在會話生存期中專門這個連接服務(wù)。對于每個會話,都會出現(xiàn)一個新的專用服務(wù)器,會話與專用服務(wù)器之間存在一對一的映射。按照定義,這個專用服務(wù)器不是實例的一部分。客戶進程(也就是想要連接數(shù)據(jù)庫的程序)會通過某種網(wǎng)絡(luò)通道(如TCP/IP socket)與這個專用服務(wù)器直接通信,并由這個服務(wù)器進程接收和執(zhí)行我的SQL。如果必要,它會讀取數(shù)據(jù)文件,并在數(shù)據(jù)庫的緩存中查找我要的數(shù)據(jù)。也許它會完成我的更新語句,也可能會運行我的PL/SQL 代碼。這個服務(wù)器進程的主要目標就是對我提交的SQL 調(diào)用做出響應(yīng)。


2.2 Shared server 說明

2.2.1 說明

共享服務(wù)器(shared server),正式的說法是多線程服務(wù)器(Multi-Threaded Server)或MTS。如果采用這種方式,就不會對每條用戶連接創(chuàng)建另外的線程或新的UNIX 進程。

在共享服務(wù)器中,Oracle 使用一個“共享進程”池為大量用戶提供服務(wù)。共享服務(wù)器實際上就是一種連接池機制。利用共享服務(wù)器,我們不必為10,000 個數(shù)據(jù)庫會話創(chuàng)建10,000 個專用服務(wù)器(這樣進程或線程就太多了),而只需建立很少的一部分進程/線程,顧名思義,這些進程/線程將由所有會話共享。這樣Oracle 就能讓更多的用戶與數(shù)據(jù)庫連接,否則很難連接更多用戶。如果讓我的機器管理10,000個進程,這個負載肯定會把它壓垮,但是管理100 個或者1,000 個進程還是可以的。采用共享服務(wù)器模式,共享進程通常與數(shù)據(jù)庫一同啟動,使用ps命令可以看到這個進程。

共享服務(wù)器連接和專用服務(wù)器連接之間有一個重大區(qū)別,與數(shù)據(jù)庫連接的客戶進程不會與共享服務(wù)器直接通信,但專用服務(wù)器則不然,客戶進程會與專用服務(wù)器直接通信。之所以不能與共享服務(wù)器直接對話,原因就在于這個服務(wù)器進程是共享的。為了共享這些進程,還需要另外一種機制,通過這種機制才能與服務(wù)器進程“對話”。為此,Oracle 使用了一個或一組稱為調(diào)度器(dispatcher,也稱分派器)的進程。

客戶進程通過網(wǎng)絡(luò)與一個調(diào)度器進程通信。這個調(diào)度器進程將客戶的請求放入SGA中的請求隊列(這也是SGA 的用途之一)。第一個空閑的共享服務(wù)器會得到這個請求,并進行處理(例如,請求可能是UPDATE T SETX = X+5 WHERE Y = 2)。完成這個命令后,共享服務(wù)器會把響應(yīng)放在原調(diào)度器(即接收請求的調(diào)度器)的響應(yīng)隊列中。調(diào)度器進程一直在監(jiān)聽這個隊列,發(fā)現(xiàn)有結(jié)果后,就會把結(jié)果傳給客戶。從概念上講,共享服務(wù)器請求的流程如圖2-3 所示。

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

如圖2-3 所示,客戶連接向調(diào)度器發(fā)送一個請求。調(diào)度器首先將這個請求放在SGA 中的請求隊列中①。第一個可用的共享服務(wù)器從請求隊列中取出這個請求②并處理。共享服務(wù)器的處理結(jié)束后,再把響應(yīng)(返回碼、數(shù)據(jù)等)放到響應(yīng)隊列中③,接下來調(diào)度器拿到這個響應(yīng)④,傳回給客戶。

2.2.2 共享服務(wù)器具有以下一些缺點

一般我們以oracle默認的專用服務(wù)器方式就行了,沒必要使用共享服務(wù)器模式。一個是我們是使用中間件(如:weblogic)去連oracle的,中間件本身有連接池機制,另外就是oracle的這個共享服務(wù)器方式也做的不夠好了,有諸多缺點。

1)共享服務(wù)器的代碼路徑比專用服務(wù)器長,所以它天生就比專用服務(wù)器慢。
2)存在人為死鎖的可能,因為它是串行的,只要一個連接阻塞,則該服務(wù)器進程上的所有用戶都被阻塞,并且極可能死鎖。
3)存在獨占事務(wù)的可能,因為如果一個會話的事務(wù)運行時間過長,它獨占共享資源,其它用戶只能等待,而專用服務(wù)器,每個客戶端是一個會話。
4)共享服務(wù)器模式限制了某些數(shù)據(jù)庫特性,例如:不能單獨啟動和關(guān)閉實例,不能進行介質(zhì)恢復(fù),不能使用Log Miner,并且SQL_TRACE沒有意義(因為是共享而不是當前會話的)。

MTS減少的內(nèi)存實際上是專用服務(wù)器模式下每個用戶連接到操作系統(tǒng)進程所需的內(nèi)存,但它卻使用SGA的Large_Pool來分配UGA,拆東墻補西墻,所減少的內(nèi)存是很少的。如果用戶會話的連接和斷開很頻繁,數(shù)據(jù)庫進程的創(chuàng)建和刪除的開銷會非常大,這種情況最好采用共享服務(wù)器模式(否則,應(yīng)該使用連接池技術(shù))。如果客戶端一次連接終身使用(會話生命周期內(nèi)),使用共享服務(wù)器模式的意義不大。因為大部分時間,一個會話就連接到一個服務(wù)器進程,無法共享服務(wù)器進程。

2.2.3 共享服務(wù)初始化參數(shù)的一些說明

shared_servers : 指定了當instance 啟動的時候 shared server process 啟動的數(shù)量,不要將這個參數(shù)設(shè)置得太大,否者啟動數(shù)據(jù)庫instance 的時候 就會花更多時間,Oracle啟動過后會根據(jù)負載來動態(tài)調(diào)整shared_servers。如果為0,表示數(shù)據(jù)庫沒有啟動共享服務(wù)模式。 這個參數(shù)是配置shared server 必須的,而且只有這個參數(shù)是必須的。

修改參數(shù): alter system set shared_servers=1;

max_shared_servers: ORACLE在同一個時刻最大能夠使用的 shared server process.不要將這個參數(shù)設(shè)置小于 shared_servers,如果動態(tài)修改shared_servers大于max_shared_servers,ORACLE會覆蓋max_shared_servers的值,此時你需要修改max_shared_servers.同時也不能大于processes。這個參數(shù)是為了給占用很大資源操作而設(shè)的(批處理),為了預(yù)留一些process 給DBA任務(wù)(rman備份),

shared_server_sesions: 指定了總共允許的的shared server session 的數(shù)量。如果設(shè)置了這個參數(shù),那么就不要將這個值超過sessions,如果沒有設(shè)置這個值,那么只要還有空閑的session,就可以被使用。設(shè)置這個值是為專有連接預(yù)留 user sessions.

dispatchers: 配置 dispatcher process .如果不設(shè)置這個參數(shù),只要設(shè)置了shared_servers ,oracle 也會自動設(shè)置一個基于tcp協(xié)議的dispatcher。還需要查看操作系統(tǒng)支持一個dispatcher能處理多少個connections

SQL> select * from v$dispatcher;

max_dispatchers: 設(shè)置同一時刻能夠同時運行的dispatchers的數(shù)量,必須大于等于 dispatchers ,小于processes。這個參數(shù)也會被dispatchers覆蓋。

circuits: 指定了virtual circuits 的總數(shù)量。

2.2.4關(guān)閉共享模式

將shared_servers參數(shù)置為0,那么所有以共享方式連接到數(shù)據(jù)庫都不能成功,但是未釋放的共享連接會繼續(xù)保持連接,直到斷開。如果將shared_servers 和max_shared_servers都設(shè)為0,那么共享連接將被終結(jié)。所有的共享方式連接都斷開了的話,就可以使用alter system set dispatcher=’’; 將dispatcher清除,防止下次啟動數(shù)據(jù)庫又打開了共享連接方式。

2.3 TCP/IP 連接的基本原理

這里將分析網(wǎng)絡(luò)上最常見的一種情形:在TCP/IP 連接上建立一個基于網(wǎng)絡(luò)的連接請求。在這種情況下,客戶在一臺機器上,而服務(wù)器駐留在另一臺機器上,這兩臺機器通過一個TCP/IP 網(wǎng)絡(luò)連接。客戶率先行動,使用Oracle 客戶軟件(Oracle 提供的一組應(yīng)用程序接口,或API)建立一個請求,力圖連接數(shù)據(jù)庫。

例如,客戶可以發(fā)出以下命令:

C:\Users\Administrator.DavidDai>sqlplus sys/oracle@dave2_202as sysdba;

SQL*Plus: Release 11.2.0.1.0 Production onSun Aug 21 14:36:47 2011

Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise EditionRelease 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Miningoptions

SQL>

這里,客戶是程序SQL*Plus,dave2_202是一個TNS 服務(wù)名。TNS 代表透明網(wǎng)絡(luò)底層(Transparent Network Substrate),這是Oracle 客戶中處理遠程連接的“基礎(chǔ)”軟件,有了它才有可能建立對等通信。TNS 連接串告訴Oracle 軟件如何與遠程數(shù)據(jù)庫連接。

一般地,機器上運行的客戶軟件會讀取一個tnsnames.ora 文件。這是一個純文本的配置文件,通常放在[ORACLE_HOME]\network\admin目錄下。配置如下:

dave2_202 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.202)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dave2)

)

)

根據(jù)這個配置信息,Oracle 客戶軟件可以把我們使用的TNS 連接串dave2_202映射到某些有用的信息,也就是主機名、該主機上“監(jiān)聽器”進程接受(監(jiān)聽)連接的端口、該主機上所連接數(shù)據(jù)庫的服務(wù)名,等等。

服務(wù)名表示具有公共屬性、服務(wù)級閾值和優(yōu)先級的應(yīng)用組。提供服務(wù)的實例數(shù)量對應(yīng)用是透明的,每個數(shù)據(jù)庫實例可以向監(jiān)聽器注冊,表示要提供多個服務(wù)。 所以,服務(wù)就映射到物理的數(shù)據(jù)庫實例,并允許DBA 為之關(guān)聯(lián)閾值和優(yōu)先級。這個串(dave2_202)還可以用其他方式來解析。例如,可以使用Oracle Internet 目錄(Oracle Internet Directory,OID),這是一個分布式輕量級目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)服務(wù)器,其作用就相當于解析主機名的DNS。不過,tnsnames.ora文件通常只適用于大多數(shù)小到中型安裝,在這些情況下,這個配置文件的副本不算太多,尚可管理。

既然客戶軟件知道要連接到哪里,它會與主機名為192.168.3.202 的服務(wù)器在端口1521 上打開一條TCP/IP socket 連接。如果服務(wù)器DBA 安裝并配置了Oracle Net,并且有一個監(jiān)聽器在端口1521上監(jiān)聽連接請求,就會收到這個連接。 在網(wǎng)絡(luò)環(huán)境中,我們會在服務(wù)器上運行一個稱為TNS 監(jiān)聽器的進程。就是這個監(jiān)聽器進程能讓我們與數(shù)據(jù)庫物理連接。當它收到入站連接請求時,它會使用自己的配置文件檢查這個請求,可能會拒絕請求(例如,因為沒有這樣的數(shù)據(jù)庫,或者可能我們的IP 地址受到限制,不允許連接這個主機),也可能會接受請求,并真正建立連接。

如果建立一條專用服務(wù)器連接,監(jiān)聽器進程就會為我們創(chuàng)建一個專用服務(wù)器。在UNIX上,這是通過fork()和exec()系統(tǒng)調(diào)用做到的(在UNIX 中,要在初始化之后創(chuàng)建新進程,惟一的辦法就是通過fork())。 這個新的專用服務(wù)器進程繼承了監(jiān)聽器建立的連接,現(xiàn)在就與數(shù)據(jù)庫物理地連接上了。

在Windows 上,監(jiān)聽器進程請求數(shù)據(jù)庫進程為連接創(chuàng)建一個新線程。一旦創(chuàng)建了這個線程,客戶就會“重定向”到該線程,相應(yīng)地就能建立物理連接。圖2-4 顯示了UNIX 上的監(jiān)聽器進程和專用服務(wù)器連接。

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

另一方面,如果我們發(fā)出共享服務(wù)器連接請求,監(jiān)聽器的表現(xiàn)則會有所不同。監(jiān)聽器進程知道實例中運行了哪些調(diào)度器。接收到連接請求后,監(jiān)聽器會從可用的調(diào)度器池中選擇一個調(diào)度器進程。監(jiān)聽器會向客戶返回連接信息,其中說明了客戶如何與調(diào)度器進程連接;如果可能的話,還可以把連接“轉(zhuǎn)發(fā)”給調(diào)度器進程(這依賴于不同的操作系統(tǒng)和數(shù)據(jù)庫版本,不過實際效果是一樣的)。

監(jiān)聽器發(fā)回連接信息后,它的工作就結(jié)束了,因為監(jiān)聽器一直在特定主機的特定端口上運行(主機名和端口號大家都知道),而調(diào)度器會在服務(wù)器上隨意指派的端口上接受連接。監(jiān)聽器要知道調(diào)度器指定的這些隨機端口號,并為我們選

擇一個調(diào)度器。客戶再與監(jiān)聽器斷開連接,并與調(diào)度器直接連接?,F(xiàn)在就與數(shù)據(jù)庫有了一個物理連接。這個過程如圖2-5 所示。

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明

三. 判斷oracle是共享模式還是專用模式的方法

3.1. showparameter shared_server;

(注:8i應(yīng)為:showparameter mts_servers;)
SQL> show parameter shared_server;

NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 20
shared_server_sessionsinteger 330
shared_serversinteger 1

3.2 查看v$session 視圖

SQL> Select username,server,program fromv$session where username is not null;

USERNAME SERVER PROGRAM

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

SYS DEDICATED rman.exe

RMAN DEDICATED rman.exe

SYS DEDICATED rman.exe

SYS DEDICATED sqlplus.exe

SYS DEDICATED rman.exe

DAVE DEDICATED toad.exe

SYS DEDICATED toad.exe

3.3 查看監(jiān)聽: lsnrctl service

C:\Users\Administrator.DavidDai>lsnrctlservice

LSNRCTL for 32-bit Windows: Version11.2.0.1.0 - Production on 26-6月 -2010 11:7:40 Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在連接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服務(wù)摘要..

服務(wù)"orcl" 包含 1 個實例。

實例 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...

處理程序:

"DEDICATED" 已建立:34 已拒絕:0 狀態(tài):ready

LOCAL SERVER

服務(wù)"orclXDB" 包含 1 個實例。

實例 "orcl", 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...

處理程序:

"D000" 已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態(tài): ready

DISPATCHER <machine: DAVIDDAI, pid:10884>

(ADDRESS=(PROTOCOL=tcp)(HOST=DavidDai)(PORT=58400))

命令執(zhí)行成功

3.4.查看TNSNAMES.ora 文件。如:

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = DavidDai)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

這里是以DEDICATED 專用模式連接 orcl 實例。寫上 (SERVER = SHARED) 則是使用共享服務(wù)器模式,但是這時shared_server_process需要打開,要不然會出錯連不上oracle。要是這段放空沒寫,那么系統(tǒng)會根據(jù)服務(wù)器模式自動調(diào)節(jié),不過根據(jù)實測結(jié)果,就算服務(wù)器是定義成共享服務(wù)器模式,shared_server_process沒打開的情況下,在v$session中查到的連接依然是SERVER = DEDICATED。

所以基本上我們這段話我們都是可以放空著不寫的,但是有時候要連上我們的共享服務(wù)器模式的數(shù)據(jù)庫,放空有可能系統(tǒng)認為要用共享服務(wù)器方式去連,那時就要聲明 SERVER = DEDICATED采用專用服務(wù)器方式去連接。

在數(shù)據(jù)庫啟動的時候,如果沒有指定shared_servers,但是設(shè)置了dispatchers,那么ORACLE就認為啟動了shared server ,并且設(shè)置shared_servers為1. 在數(shù)據(jù)庫啟動的時候,沒有設(shè)置shared_servers,沒有設(shè)置dispatchers,即使以后修改了dispatchers,也不能啟動shared server,必須從新啟動數(shù)據(jù)庫。


另外,Background process ,以及通過本地連接進來的,只能是DEDICATED .比如說sqlplus user/pass形式。如果數(shù)據(jù)庫沒有配置共享服務(wù)器,那么客戶端只能以DEDICATED方式連接數(shù)據(jù)庫.

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

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(滿); DBA2 群:62697977(滿)DBA3 群:62697850(滿)

DBA 超級群:63306533(滿); DBA4 群: 83829929(滿)DBA5群: 142216823(滿)

DBA6 群:158654907(滿) 聊天 群:40132017(滿) 聊天2群:69087192(滿)

--加群需要在備注說明Oracle表空間和數(shù)據(jù)文件的關(guān)系,否則拒絕申請


<!--EndFragment-->

Oracle Dedicated server 和 Shared server(專用模式 和 共享模式) 說明


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 山丹县| 盖州市| 清水县| 卓资县| 随州市| 永兴县| 云安县| 十堰市| 合肥市| 隆化县| 当雄县| 徐闻县| 芜湖市| 保康县| 临猗县| 罗源县| 拜城县| 宁津县| 民和| 龙游县| 湟源县| 富锦市| 江门市| 苍梧县| 东莞市| 福建省| 海宁市| 阿坝县| 丹凤县| 赤峰市| 青铜峡市| 峨山| 成安县| 云龙县| 仁怀市| 郁南县| 碌曲县| 石狮市| 西充县| 漳州市| 汕头市|