sql >> Databáze >  >> NoSQL >> MongoDB

Souběžnost v gopkg.in/mgo.v2 (Mongo, Go)

mgo.Session je bezpečný pro současné použití. Cituji z jeho dokumentu:

Všechny metody relací jsou bezpečné pro souběžný provoz a lze je volat z více goroutin.

To však neznamená, že byste jich neměli vytvářet a používat více paralelně voláním Session.Copy() nebo Session.Clone() , na úvodní relaci získané v čase vytáčení.

Zabezpečení souběžného provozu a výhoda z používání více z nich se navzájem nevylučují (nejsou vzájemně vylučující ). I když můžete použít jednu mgo.Session z libovolného počtu goroutin, které se nebudou dobře škálovat, které se nebudou škálovat vůbec . Relace automaticky spravují fond připojení, možná dokonce k více serverovým uzlům, ale pokud používáte jednu Session , nevyužíváš toho. Vytvořením nové Session na začátku každého vašeho požadavku (v případě potřeby) a na konci jej řádně uzavřete (pomocí Session.Close(); nejlépe voláno pomocí defer ), využíváte potenciálního použití více připojení současně, případně k více serverovým uzlům (pokud jsou k dispozici), a tím lépe využíváte prostředky serveru; a zrychlení doby odezvy (jak z databáze, tak i pro koncové uživatele HTTP). Volání Session.Close() neuzavře základní připojení k serveru, pouze vrátí připojení zpět do fondu, připravené k vyzvednutí další relací.

Podívejte se také na související otázku o použití Session s:mgo – výkon dotazu se zdá být trvale pomalý (500–650 ms)



  1. Co je Express.js?

  2. Pipelining vs Batching v Stackexchange.Redis

  3. Mongoose naplní vnořené pole

  4. Úvod do distribuované mezipaměti v Hadoopu