Dela via


Driver-Aware Anslutningspooling

Drivrutinsmedveten anslutningspool är en ny funktion i Drivrutinshanteraren i Windows 8. Med anslutningspooler med drivrutinsmedvetande kan utvecklare av drivrutiner anpassa beteendet för anslutningspooler i deras ODBC-drivrutiner.

Anmärkning

Drivrutinsberoende anslutningspooler stöds inte med markörbiblioteket. Ett program får ett felmeddelande om det försöker aktivera markörbiblioteket via SQLSetConnectAttr när drivrutinsmedveten anslutningspool är aktiverad.

Drivrutinsmedveten anslutningspoolhantering åtgärdar följande problem som rör Driver Managers anslutningspooler:

Poolfragmentering Drivrutinsverktyget returnerar endast en anslutning från poolen om det är en exakt matchning med anslutningssträngen för en ny anslutningsbegäran. En anledning till att Driver Manager kräver en exakt matchning är att Drivrutinshanteraren inte förstår varje nyckelord för drivrutinsspecifik anslutningssträng och dess värde. Vissa nyckelordsvärden för anslutningssträngar (till exempel namnet på databasen) kanske inte kräver någon exakt matchning, eftersom drivrutinen kan ändra databasen på mindre än den tid som krävs för att öppna en ny anslutning (den exakta tidsskillnaden beror på datakällan). Och skillnader i vissa anslutningsattribut (till exempel SQL_ATTR_CURRENT_CATALOG) kan ta längre tid att ändra än skillnader i andra attribut (till exempel SQL_ATTR_LOGIN_TIMEOUT). Detta kan också hindra Driver Manager från att använda den billigaste, återanvändbara anslutningen från poolen. När en drivrutin måste skapa många nya anslutningar kan ett programs prestanda minska och datakällans skalbarhet kan minska. Poolfragmentering kan minskas med drivrutinsmedveten anslutningspool eftersom en drivrutin bättre kan uppskatta kostnaden för att återanvända en anslutning i poolen för en anslutningsbegäran.

Ingen hänsyn till programinställningar Vissa datakällor kan effektivt öppna nya anslutningar (jämfört med att återställa vissa attribut), så ett program kanske föredrar att öppna en ny anslutning i stället för att försöka återanvända en något felmatchad anslutning från poolen och återställa vissa värden (även om detta kan vara långsammare under initieringsfrasen för anslutningspoolen). Men vissa program kan hålla serverbelastningen mindre och öppna färre anslutningar, även om det kan finnas en större kostnad för att åtgärda felmatchningarna för korrekt beteende. Utan en anslutningspool som är medveten om drivrutiner kan du inte effektivt ange denna typ av preferens, eftersom Drivrutinsmanager inte känner igen alla drivrutinsspecifika anslutningsattribut. Med drivrutinsmedveten anslutningspool kan en drivrutin hämta användarinställningarna (med ett drivrutinsspecifikt attribut för SQLSetConnectAttr) så att den bättre kan uppskatta kostnaden för att återanvända en anslutning från poolen baserat på användarens önskemål.

För mer information om drivrutinsmedveten anslutningspoolning, se Utveckling av anslutningspoolmedvetenhet i en ODBC-drivrutin.

Identifiera drivrutinsstöd

Drivrutinsmedveten anslutningspool är en valfri funktion som en drivrutin kanske inte stöder. Om du vill avgöra om en drivrutin stöder den använder du SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType för SQLGetInfo.

Så här gör du för att aktivera driver-medveten anslutningspoolning

Ett program kan använda en drivrutins medvetenhet om anslutningspooler genom att ange attributet SQL_ATTR_CONNECTION_POOLING till SQL_CP_DRIVER_AWARE med SQLSetEnvAttr. Om en drivrutin inte stöder medvetenhet om anslutningspooler används Driver Manager-anslutningspooler (samma som om SQL_CP_ONE_PER_HENV hade angetts i stället för SQL_CP_DRIVER_AWARE). ODBC 2.x- och 3.x-program kan aktivera den här funktionen.

Se även

Utveckla en ODBC-drivrutin