Saite uz rakstu ir šāda:
http://www.cnblogs.com/LoveJenny/archive/2011/10/31/2229738.html
1: Vai SqlConnection ir drošs ar vītnēm?
Var būt zināms, ka savienojuma izmantošana, lai izpildītu SQL priekšrakstu daudzpavedienu vidē, irNav drošiMērķa.
SqlConnection nav drošs ar pavedieniem, tāpēc multithreading noteikti būs problēma. Faktiski .net automātiski nodrošina savienojuma pūla pārvaldību, ja vien savienojuma virkne ir vienāda (jābūt tieši tādai pašai), tā būs tajā pašā baseinā, atvērt un aizvērt faktiski ņem savienojumu no baseina un ievieto savienojumu atpakaļ baseinā, kas neradīs veiktspējas problēmas. Tāpēc pēc katra savienojuma atvēršanas tas jāaizver pēc iespējas ātrāk pēc lietošanas, lai savienojumu varētu atgriezt baseinā, lai izmantotu citas programmas.
2: Kāpēc cilvēki joprojām izmanto iepriekš minēto rakstīšanas metodi, lai izveidotu savienojumus?
Es domāju, ka viņi varētu domāt, ka vairāku savienojumu izveide ir laikietilpīga un ka vairāki savienojumi aizņem atmiņu, ietekmē veiktspēju utt.
3: Vai katrs jauns SqlConnection aizņem atmiņu un resursus, ietekmējot veiktspēju?
Tā ir akla domāšana, akla uztraukšanās.
Jo"Vairāku savienojumu izveide" ne vienmēr rada vairākus jaunus datu bāzes savienojumusDatu bāzes savienojums ir vērtīgs resurss, ciktāl tas attiecas uz MS SQL Server, šis vērtīgais resurss tiks optimizēts iekšēji, un savienojums tiks izmantots atkārtoti.
Savienojuma pūlu nodrošina .net, savienojuma virknē ir Pooling rekvizīts, noklusējums ir patiess, tas ir, savienojuma pūls ir ieslēgts pēc noklusējuma, tam nav nekāda sakara ar sql serveri, ja savienojuma virknē rakstāt Pooling=false, tad savienojuma pūla nav, tas ir pilnīgi . .NET optimizācija.
Viena datu bāzes savienojuma izmantošanas seku izpēte vairākos pavedienos Raksta saite: http://www.th7.cn/Program/java/201503/415005.shtml
Kopsavilkums: Vairāku pavedienu vidē viena savienojuma izmantošana var radīt darījumu neskaidrības bez savienojuma drošas apstrādes.... Ietekmē JDBC transakciju izmantošanu...
|