Está en la página 1de 47

GuaparalamejoradelrendimientodeMSSQLServer7.0 HenryLau MicrosoftCorporation Octubrede1998 ResumenOfrecealosadministradoresyprogramadoresdebasesdedatosinformacindeintersacercade laseleccindendicesdeMicrosoftSQLServer7.0,losajustesdelsubsistemadeE/Sdediscoylas herramientasdeajustedelrendimientodeSQLServer7.0.

Audiencia
Estaguaparalamejoradelrendimientoestdiseadaparaayudaralosadministradoresdebasesdedatos aconfigurarMicrosoftSQLServerparaobtenerelmximorendimientoyparaayudarlesadeterminarlos motivosdesubajorendimientoenunentornodeSQLServer.Tambinofrecealosprogramadoresde aplicacionesdeSQLServerorientacinacercadecmoutilizarlosndicesylasherramientasdeSQLServer paraanalizarlaeficaciadelrendimientodeentradaysalida(E/S)delasconsultasSQL. SQLServer6.xfrentea7.0,informacincomparativadelamejoradelrendimiento ConsideracionesacercadeSQL6.x MejorasyfilosofadeSQLServer7.0 UnamejoraimportantedeSQLServer7.0esqueel motordebasededatosseconfigura,seajustayse gestionaprincipalmentedeformaautomtica.La escrituradiferidayelAdminitsradordelecturaanticipada seajustanautomticamente.EsposiblequelaE/Sde MaxAsyncsealanicaopcindesp_configurequehaya queconfigurarinicialmentecuandoseutilicenservidores conmayorcapacidaddealmacenamiento.Esta reduccindelosrequisitosdeajusteahorramucho tiempoadministrativoquesepuedeaplicaraotras tareas.Aquellaspersonasquehayanledolaversin anteriordeestedocumento,"MicrosoftSQLServer6.5: I/OPerformanceTuningQuickReference",en http://msdn.microsoft.com/developer/news/sqlperftune.htm )sedarncuentadequenohaycasiopcionesde Duranteelajustedelrendimientohaba sp_configurequetenganqueconfigurarmanualmentelos quetenerencuentamuchasopcionesde administradoresdebasesdedatosparaobtenerunbuen configuracin. rendimientodeSQLServer.Aunquesiguesiendoposible configuraryajustardeformamanualmuchasdelas opcionesdesp_configurequeyaseencontraban disponiblesenlasversionesanterioresdeSQLServer, esaconsejablequelosadministradoresdebasesde datospermitanaSQLServerconfiguraryajustar automticamentetodaslasopcionesdesp_configure queSQLServerproporcionadeformapredeterminada. EllopermitequeSQLServerajusteautomticamentela configuracindelservidordebasesdedatosamedida quecambianlosfactoresqueleafectan.(Algunos ejemplosdedichosfactoressonlautilizacindela memoriaRAMydelaCPUenSQLServeryenotras aplicacionesqueseejecutanfueradelservidordebases dedatos.)

dedatos.) SQLServer7.0configurayajustaautomticamentela escrituradiferida.Yanoesnecesarioajustar manualmentelosbferesdisponiblesyelmximodeE/S deescrituradiferida.Elbferdisponibleylaactividadde E/Sdeescrituradiferidasesiguepudiendosupervisar conlosnuevosobjetosdelMonitorderendimientode SQLServer7.0,quesedescribenmsadelante.

Algunasvecesfuenecesariomejorarla escrituradiferidadeformamanual.

EnlasversionesdeSQLServeranterioresala7.0, tambinseutilizabael"intervaloderecuperacin"para ajustarelprocesodepuntosdecomprobacin.SQL Server7.0ajustaautomticamentelaopcindelintervalo derecuperacin.Elvalorpredeterminadodelintervalode recuperacindeSQLServer7.0es0eindicaqueSQL Servervaatomarlaresponsabilidaddesupervisary ajustarautomticamenteelintervaloderecuperacin. Estaconfiguracinpredeterminadamantendrlos Algunasvecesfuenecesarioajustarel tiemposderecuperacinpordebajodeunminutoen puntodecomprobacindeformamanual. todaslasbasesdedatos,siemprequenohaya transaccionescuyaejecucinseaexcepcionalmente largaenelsistema.Paraobtenermsinformacin, busqueenlascadenas"Puntosdecomprobacinyparte activadelregistro"y"Solucionarproblemasdeintervalo derecuperacin"delosLibrosenpantalladeSQL Server(paraobtenerinformacinacercadecmo instalarlosLibrosenpantalladeSQLServerconsultela seccin"Paraobtenermsinformacin",quese encuentraalfinaldeestedocumento). ElAdministradorderegistrodeSQLServerhacambiado considerablementeenSQLServer7.0conrespectoalas versionesanterioresdeSQLServer.ElAdministradorde registrodeSQLServer7.0administrasupropiacach deregistro.Yanoexisteladependenciaenlatabla SYSLOGSqueexistaenlasversionesanterioresde SQLServer.Estaseparacindelaadministracindel archivoderegistrodelaadministracindelacachde datosmejoraelrendimientodeamboscomponentes.El LaspginasderegistrodeSQLServer AdministradorderegistrodeSQLServertambines 6.xcompartanlacachdelaRAMcon capazderealizarE/Sdediscoentamaosdebytes laspginasdedatos.Algunasvecesha mayoresqueantes.ElmayortamaodeE/Scombinado sidonecesarioelajustemanualdel conlanaturalezasecuencialdelregistrodeSQLServer Administradorderegistro. ayudanamejorarelrendimientodeE/Sdediscoenel Administradorderegistro.SQLServer7.0ajusta automticamenteelrendimientodelAdministradorde registrodeSQLServer.Yanohaynecesidaddeajustar manualmentelaopcinlogwritesleepdesp_configure. EstaopcinsehaquitadodeSQLServer7.0.Para obtenermsinformacin,busquelacadena"logwrite sleep"(tiempodeesperaparaescribirenregistro)enlos LibrosenpantalladeSQLServer.

LibrosenpantalladeSQLServer.

PrincipiosdelajustedelrendimientodeSQL Server
DejequeSQLServerseencarguedelamayoradeltrabajodeajuste. SQLServer7.0hamejoradoconsiderablementeparacrearunservidordebasesdedatosqueengran parteseconfigurayseajustaautomticamente.AprovechelaconfiguracindeajusteautomticodeSQL Server.ElloayudaaqueSQLServerseejecutealmximorendimientoauncuandolacargadelusuarioy lasconsultascambienconelpasodeltiempo. LamemoriaRAMesunrecursolimitado. Unaparteimportantedecualquierentornodeservidoresdebasesdedatoseslaadministracindela cachdelbferdelamemoriadeaccesoaleatorio(RAM).ElaccesoalosdatosdelacachdeRAMes muchomsrpidoqueelaccesoalamismainformacindeldisco.PerolamemoriaRAMesunrecurso limitado.SilaE/Sdelabasededatos(operacionesdeentrada/salidaenelsubsistemadeldiscofsico) sepuedereduciralconjuntonecesariomnimodedatosypginasdendice,estaspginas permanecernmstiempoenlaRAM.Cuandodemasiadosdatoseinformacindendiceinnecesarios pasanporlacachdelbfernodejansitioparapginasdeinters.Elenfoquemotrizdelajustedel rendimientoesreducirlaE/Sconelfindequelautilizacindelacachdelbfersealaptima. Crearymantenerndicesvlidos. UnfactorclaveparamantenerlaE/Smnimadetodaslasconsultasdelasbasesdedatosesgarantizar quesecreanymantienenndicesvlidos. SupervisarelrendimientodelsubsistemadeE/Sdedisco. Elsubsistemadediscosfsicosdebeproporcionarunservidordebasesdedatosconsuficiente capacidaddeprocesamientodeE/Sparaqueelservidordebasesdedatosseejecutesincolade discos.Lacoladediscosdacomoresultadounmalrendimiento.Estedocumentodescribecmo detectarlosproblemasdeE/Sdediscoycmoresolverlos. Ajustedelasaplicacionesydelasconsultas. Estatareacobraunaespecialimportanciacuandounservidordebasesdedatosvaaatender solicitudesdecientosomilesdeconexionesatravsdeunaaplicacindada.Dadoquelasaplicaciones suelendeterminarlasconsultasSQLquesevanaejecutarenunservidordebasesdedatos,esmuy importanteparalosprogramadoresdeaplicacionesconocerlosprincipiosbsicosdelaarquitecturade SQLServerycmoaprovecharalmximolosndicesdeSQLServerparaminimizarlaE/S. AprovecharlaeficazcombinacindelAnalizadordeSQLServeryalAsistenteparaoptimizacinde ndices. ElAnalizadordeSQLServerpuedeutilizarseparasupervisaryregistrarlacargadetrabajodeSQL Server.Posteriormente,estacargadetrabajopuedeenviarsealAsistenteparaoptimizacindendices deSQLServerconelfindeque,siesnecesario,puedanrealizarsecambiosquemejorenelrendimiento. ElusohabitualdelAnalizadordeSQLServerydelAsistenteparaoptimizacindendicesayudaaSQL Serveratrabajarbienamedidaquelacargadetrabajogeneraldeconsultascambiaconelpasodel tiempo.

UtilizarelMonitorderendimientodeSQLServerparadetectarcuellosdebotella. SQLServer7.0incluyeunconjuntorevisadodeobjetosycontadoresdelMonitorderendimiento diseadosparaproporcionarinformacintilparalasupervisinyanlisisdelasoperacionesdeSQL Server.EnestedocumentosedescribenloscontadoresclavedelMonitorderendimientoquehayque vigilar. UtilizarelAnalizadordeconsultasyelPlandepresentacingrficodeSQLServer. SQLServer7.0presentaelPlandepresentacingrfico,unsencillomtododeanlisisdeconsultas SQLproblemticas.LaE/SdeestadsticasesotroaspectoimportantedelAnalizadordeconsultasque sedescribeenestedocumento.

Elementosderendimientoparalaconfiguracin deSQLServer
E/Sasincrnicamxima
Elvalorpredeterminadode32essuficienteparasubsistemasdediscosdegamabaja.Conunsistemade almacenamientoRAID(Matrizredundantedediscoseconmicos)degamaaltaconectadoaunservidorde basesdedatosqueseacapazdelograrvelocidadesdetransferenciadeE/Sdediscomuyaltas,elparmetro 32puedeprovocarunmalfuncionamientoenelsubsistemaRAID,yaquesteescapazdeatenderamuchas msde32solicitudessimultneasdetransferenciaeneldisco.Si,adems,laactividaddeescrituradeSQL ServerindicaquesenecesitamscapacidaddetransferenciahayqueestablecerunamayorE/Sasincrnica mxima. NotaLasplataformasMicrosoftWindows95y98noadmitenlaE/Sasincrnica,porloquenosepuede aplicarestaopcin. UnvalorcorrectodeE/Sasincrnicamximaesaquelquepermitealpuntodecomprobacinser"lo suficientementerpido".Elobjetivoesqueelpuntodecomprobacintengalasuficienterapidezparaacabar antesdequesenecesiteotropuntodecomprobacin(basndoseenlascaractersticasderecuperacin deseadas),peronotanrpidoqueeleventoafecteseriamentealsistema(colasdediscos,queseexplicarn conmayordetallemsadelanteenestemismodocumento). UnareglageneralparaestablecerlaE/SasincrnicamximaparaaquellosservidoresSQLServerquese utilicenensubsistemasdediscosmayoresesmultiplicarpordosoportreselnmerodeunidadesfsicasque sepuedenutilizarpararealizarE/Ssimultneas.Acontinuacin,hayqueestaratentoalMonitorderendimiento paraversihayactividadenlosdiscosoproblemasdecolas.Larepercusinnegativadeestablecerunvalor muyaltoenestaopcindeconfiguracinesquepuedehacerqueelpuntodecomprobacinmonopoliceel anchodebandadelsubsistemadediscosquenecesitanotrasoperacionesdeE/SdeSQLServer,comolas lecturas. Paraestablecerestevalor,ejecuteelcomandosiguienteenelAnalizadordeconsultasdeSQLServer: "sp_configure'maxasyncio',<valor>",donde<elvalor>seexpresacomoelnmerodesolicitudesdeE/Sde discosimultneasqueelsistemadeSQLServerpodrenviaraWindowsduranteunaoperacindesumade comprobacin,queasuvezenvalassolicitudesalsubsistemadediscosfsicos(paraobtenerms informacin,consultelaseccin"RendimientodeE/Sdedisco",msadelanteenestemismodocumento). Estaopcindeconfiguracinesdinmica(esdecir,norequierequeSQLServersedetengaysereiniciepara quesurtaefecto). Paraobtenermsinformacin,busqueenlosLibrosenpantalladeSQLServerlascadenas"arquitecturadela E/S"y"mximodeE/Sasincrnica,opcin".

ComponentesqueconsumenCPUyrecursosde E/Sdedisco
Subprocesosdetrabajo
SQLServermantieneunconjuntodesubprocesosdeWindowsqueseutilizanparaatenderloslotesde comandosSQLServerqueseenvanalservidordebasesdedatos.Elnmerototaldeestossubprocesos (denominadossubprocesosdetrabajoenlaterminologadeSQLServer)disponiblesparaatenderatodos loslotesdecomandosentrantesseindicamedianteladefinicindelmximodesubprocesosdetrabajodela opcindesp_configure.Sielnmerodeconexionesqueenvanlotesdeformaactivaesmayorqueel especificadocomomximodesubprocesosdetrabajo,dichossubprocesossecompartirnentrelas conexionesqueenvanlotesdeformaactiva.Elvalorpredeterminado,255,funcionarcorrectamenteen muchasinstalaciones.Tengaencuentaquelamayoradelasconexionesinviertenlamayorpartedesutiempo esperandoaqueserecibanlotesdelcliente. Lossubprocesosdetrabajoadoptanlamayorpartedelaresponsabilidaddeescribirpginasdesfasadasde ochokilobytes(KB)desdelacachdelbferdeSQLServer.Lossubprocesosdetrabajoprogramansus operacionesdeE/Sdeformaasincrnicaparaobtenerelmximorendimiento. Paraobtenermsinformacin,busquelascadenas"mximodesubprocesosdetrabajo,opcin", "subprocesosdeSQLServer","Optimizarelrendimientodelservidorconlasopcionesdeconfiguracinde memoria","bloquedememoriadeSQLServer","Recuperacindetransacciones","registrodeescritura previadetransacciones"y"Liberaryescribirpginasdelbfer"enlosLibrosenpantalladeSQLServer.

Escrituradiferida
LaescrituradiferidadeSQLServerayudaacrearbferesdisponibles,quesonpginasdecachdedatosde 8KBquenocontienenningndato.Amedidaquelaescrituradiferidavacacadaunodelosbferesdela cachde8KBdeldisco,necesitainicializarlaidentidaddelapginadelacachconelfindequepuedan escribirseotrosdatosenelbferdisponible.Elobjetivodelaescrituradiferidaescrearbferesdisponibles durantelosperodosdeescasaE/Sdedisco,demodoquelosrecursosdeE/Sdediscoestndisponibles parasuusoyquehayaunarepercusinmnimaenlasrestantesoperacionesdeSQLServer. SQLServer7.0configurayadministraautomticamenteelniveldebferesdisponibles.Supervisar"SQL Server:Administradordebfer,bferesdisponibles"paraversiestevalordesciende.Enunestadoptimo,la escrituradiferidamantieneelniveldeestecontadoralolargodetodaslasoperacionesdeSQLServer,loque significaquelaescrituradiferidaescapazdesatisfacerlademandadebferesdisponiblesporpartedel usuario.NoesaconsejablequeelobjetodelMonitorderendimiento"SQLServer:Administradordebfer, bferesdisponibles"llegueacero,yaqueelloindicaraquehayvecesenquelacargadelusuarioha demandadounmayorniveldebferesdisponiblesdelquelaescrituradiferidapudoproporcionar. Silaescrituradiferidatieneproblemasparamantenerestableslosbferesdisponibleso,almenos,porencima decreo,puedesignificarqueelsubsistemadediscosnoescapazdeofreceralaescrituradiferidael rendimientodeE/Sdediscoquenecesita(paracomprobarlo,comparequelosdescartesdelniveldebferes disponiblesconcualquiercoladediscos).Lasolucinesagregarmsunidadesdediscofsicasalsubsistema dediscosdelservidordebasesdedatosparaasproporcionarmscapacidaddeprocesamientodeE/Sde disco.SQLServer:Administradordebfer,escriturasdiferidasporsegundo"indicaelnmerodepginasde 8KBqueseescribenfsicamenteeneldisco. ControleelnivelactualdecoladediscosenelMonitorderendimientomediantelaobservacindelos contadoresdedisco(lgicoofsico):elpromediodecoladediscosolalongitudactualdelacoladediscos,y asegresedequelacoladediscosesinferiora2entodaslasunidadesfsicasasociadasconcualquier actividaddeSQLServer.Enelcasodelosservidoresdebasesdedatosqueempleancontroladorasde

actividaddeSQLServer.Enelcasodelosservidoresdebasesdedatosqueempleancontroladorasde hardwareRAIDymatricesdediscos,noseolvidededividirelnmeroqueindicanloscontadoresdedisco lgicoofsicoporelnmerodediscosdurosfsicosasociadosconlaletradedichaunidadlgicaoconel nmerodediscosdurosfsicos(segnlosinformesdelAdministradordediscos),yaqueWindowsySQL ServernoconocenelnmerorealdediscosdurosfsicosqueestnconectadosalascontroladorasdeRAID. EsmuyimportanteconocerelnmerodeunidadesasociadasalacontroladoradematrizRAIDparaaspoder interpretarcorrectamentelosnmerosdecolasdediscosdelosinformesdelMonitorderendimiento. AjusteelcomportamientodelassolicitudesdeE/SdediscodeescrituradiferidaatravsdeE/Sasncrnica mxima.LaopcinE/Sasncrnicamximadesp_configurecontrolaelnmerodesolicitudesdeescrituraen discode8KB(incluidaslassolicitudesqueprovienendelaescrituradiferida,delpuntodecomprobacinyde lossubprocesosdetrabajo)queSQLServerpuedetransmitiraWindowssimultneamentey,asuvez,al subsistemadeE/Sdedisco.Silacoladediscosseproduceaunosnivelesinaceptables,hayquereducirla E/Sasincrnicamxima.SiesinevitablequeSQLServermantengasunivelactualdeE/Sasincrnicas mximas,agreguemsdiscosalsubsistemadediscoshastaquelacoladelosmismossereduzcaaunos nivelesaceptables. Paraobtenermsinformacin,busquelascadenas"liberaryescribirpginasdelbfer"y"registrodeescritura previadetransacciones"enlosLibrosenpantalladeSQLServer.

Puntodecomprobacin
ElpuntodecomprobacinescribepaginasdesfasadasenlosarchivosdedatosdeSQLServer.Laspginas desfasadassoncualquierpginadelacachdelbferquesehayamodificadounavezquesehaincluidoenla cachdelbfer.Losbferesqueelpuntodecomprobacinescribeeneldiscosiguenconteniendolapginay losusuariospuedenleerlooactualizarlosintenerquevolveraleerlodeldisco,loquenopuedehacerseenlos bferesdisponiblesquecrealaescrituradiferida. Elobjetivodelpuntodecomprobacinesdejarquelossubprocesosdetrabajoyquelaescrituradiferida realicenlamayorpartedeltrabajodeescrituradepginasdesfasadas.Paraello,elpuntodecomprobacin intentaesperarunpuntodecomprobacinadicionalantesdeescribircualquierpginadesfasada,siempre queseaposible.Conelloseconcedealossubprocesosdetrabajoyalaescrituradiferidamstiempopara escribirlaspginasdesfasadas.Lascondicionesenlasquetienelugarestetiempodeesperaadicionalpara pginasdesfasadassedetallanenlaseccin"Puntosdecomprobacinyparteactivadelregistro"delos LibrosenpantalladeSQLServer.Laideaprincipalquehayquerecordaresqueelobjetivodelpuntode comprobacinesnivelarlaactividaddeE/SdediscodeSQLServerenperodosdetiempomslargoscon estaesperaadicionaldepuntosdecomprobacin. Paraaumentarlaeficaciadelpuntodecomprobacincuandohayungrannmerodepginasquehayque vaciardelacach,SQLServerclasificarlaspginasdedatosquehayquevaciarenfuncindesuordende aparicineneldisco.Conelloseayudaareducirelmovimientodelbrazodeldiscoduranteelvaciadodela cachypotencialmenteaprovecharlaE/Ssecuencialdeldisco.Elpuntodecomprobacintambinenva solicitudesdeE/Sdediscode8KBdeformaasincrnicaalsubsistemadediscos,loquepermitequeSQL ServerterminedeenviarmsrpidamentelassolicitudesdeE/Sdediscorequeridas,yaqueelpuntode comprobacinnoesperaaqueelsubsistemadediscosinformedequelosdatossehanescritorealmenteen eldisco. EsimportantevigilarlacoladediscosdelosdiscosdurosasociadosconlosarchivosdedatosdeSQLServer paracomprobarsiSQLServerenvamssolicitudesdeE/Sdediscodelasquepuedengestionarlosdiscosy siestosucede,esnecesarioqueagregarmscapacidaddeE/Sdediscoalsubsistemadediscosparaque puedagestionarlacarga. AjusteelcomportamientodelvaciadodelaspginasdesfasadasdelpuntodecomprobacinmediantelaE/S asincrnicamxima.LaopcinE/Sasincrnicamximadesp_configurecontrolaelnmerodevaciadosdela cachde8KBqueelpuntodecomprobacinpuedeenviarsimultneamenteaWindowsy,asuvez,al subsistemadeE/Sdedisco.Silacoladediscosseproduceaunosnivelesinaceptables,hayquereducirla

subsistemadeE/Sdedisco.Silacoladediscosseproduceaunosnivelesinaceptables,hayquereducirla E/Sasincrnicamxima.SiesinevitablequeSQLServermantengasunivelactualdeE/Sasincrnicas mximas,agreguemsdiscosalsubsistemadediscoshastaquelacoladelosmismossereduzcaaunos nivelesaceptables. Porotraparte,siesnecesarioaumentarlavelocidadconlaqueSQLServerejecutaelpuntodecomprobacin yelsubsistemadediscosyaeslosuficientementeeficazparagestionarelincrementodeE/Sdediscosinque hayacolasdediscos,aumentelaE/SasincrnicamximaparapermitirqueSQLServerenvemssolicitudes deE/Sdediscoalmismotiempo,loquepotencialmentemejoraelrendimientodelaE/S.TrascambiarlaE/S asincrnicamximavigileatentamenteloscontadoresdecoladediscos.Presteespecialatencinalacolade lecturadeldiscoademsdealadeescritura.SielvalordeE/Sasincrnicamximaesdemasiadoaltopara unsubsistemadediscosdeterminado,esposiblequeelpuntodecomprobacintiendaaponerencolaun grannmerodesolicitudesdeE/Sdeescriturasendisco,loquepuedehacerquesebloqueelaactividadde lecturadeSQLServer.DBCCPERFMONproporcionalecturaspendientescomounadesussalidasyesun buencontadorparacontrolarenelMonitorderendimientolaslecturasdeSQLServerencola.Losobjetosde discofsicoydiscolgicodelMonitorderendimientoproporcionanelcontadorPromediodecoladelecturade disco,quetambinsepuedeutilizarparasupervisarlassolicitudesdeE/Sdelecturasdediscoencola.Sies elpuntodecomprobacinelqueprovocalascolasdelecturadeldisco,haydosopciones:reducirlaE/S asincrnicamximaoagregarmsdiscosdurosconelfindepodergestionardeformasimultneaelpuntode comprobacinylassolicitudesdelectura.

Administradorderegistro
Aligualquelosrestantesproductosdelsistemadeadministracindebasededatosrelacionales(RDBMS) principales,SQLServergarantizaquenosevaaperderningunadelasactividadesdeescritura(insertar, actualizaryeliminar)realizadasenlabasededatosaunquecualquiercontratiempointerrumpaelestadoen lneadeSQLServer(comouncortedealimentacinelctrica,unerrorenlaunidaddedisco,unincendioenel centrodedatos,etc.).Unodeloselementosqueayudaagarantizarlarecuperacindeestasactividadesesel procesoderegistrodeSQLServer.Antesdefinalizarcualquiertransaccinimplcita(consultaSQLindividual) oexplcita(transaccindefinidaqueemiteunasecuenciadecomandosBEGINTRAN/COMMIToROLLBACK), elAdministradorderegistrodeSQLServerdeberecibirunasealdelsubsistemadediscosqueindiqueque todosloscambiosdedatosasociadosconlatransaccinsehanescritocorrectamenteenelarchivode registroasociado.EstareglagarantizaquesiSQLServerseapagadeimprovisoporcualquierraznylas transaccionesescritasenlacachdedatosannosehanvaciadoenlosarchivosdedatos(recuerdequeel vaciadodelosbferesdedatosesresponsabilidaddelpuntodecomprobacinodelaescrituradiferida),es posibleleeryvolveraaplicarelregistrodetransaccionesenSQLServermediantelaactivacindeSQL Server.LalecturadelregistrodetransaccionesylaaplicacindelasmismasenSQLServertrasunaparada delservidorrecibeelnombrederecuperacin. DadoqueSQLServerdebeesperaraqueelsubsistemadediscoscompletelaE/Salosarchivosderegistro deSQLServeramedidaqueserealizacadaunadelastransacciones,esimportantequelosdiscosque contenganlosarchivosderegistrodeSQLServertengansuficientecapacidaddegestindeE/Sdedisco paralacargaanticipadadelastransacciones. ElmtododevigilarlacoladediscosasociadaconlosarchivosderegistrodeSQLServeresdistintodelos archivosdebasesdedatosdeSQLServer.UtiliceloscontadoresdelMonitorderendimiento"SQLServer: Basesdedatos<instanciadelabasededatos>:Tiempodeesperadevaciadosderegistro"y"SQLServer: Basesdedatos<instanciadelabasededatos>:Esperasalvaciarelregistro/seg."paraversihaysolicitudes delescritorderegistrosenelsubsistemadediscosesperandoafinalizar. EsadecuadoutilizarunacontroladoradecachparalosarchivosderegistrodeSQLServer(dehecho,es necesarioparaobtenerelmximorendimiento),siemprequelacontroladoragaranticequelosdatosquesele confanseacabarnescribiendoeneldisco,aunque,porejemplo,fallelaalimentacin.Paraobtenerms informacinacercadelascontroladorasdecach,consultelaseccin"Efectodelacachentarjetadelas controladorashardwaredeRAID"msadelanteenestemismodocumento. Paraobtenermsinformacin,busquelascadenas"Recuperacindetransacciones","SQLServer:objeto

Paraobtenermsinformacin,busquelascadenas"Recuperacindetransacciones","SQLServer:objeto Administradorderegistro"y"optimizarelrendimientodelregistrodetransacciones"enlosLibrosenpantalla deSQLServer.

Administradordelecturasanticipadas
ElAdministradordelecturasanticipadas,deSQLServer7.0,seconfigurayseajustadeformatotalmente automtica.ElAdministradordelecturaanticipadaestestrechamenteintegradoconlasoperacionesdel procesadordeconsultasdeSQLServer.ElprocesadordeconsultascomunicaalAdministradordelectura anticipadalassituacionesquesebeneficiarandelasexploracionesdelecturaanticipada.Lasexploraciones detablasgrandes,lasexploracionesdegrandesintervalosdendicesylassondasenrbolesbdendices agrupadosysinagruparsebeneficiandelalecturaanticipada.Ellosedebeaquelaslecturasanticipadasse producenconE/Sde64KB,loqueproporcionaunmayorpotencialderendimientoalsubsistemadediscoque lasE/Sde8KB.CuandoesnecesariorecuperarunagrancantidaddedatosdeSQLServer,lalectura anticipadaeslamejorformadehacerlo. ElAdministradordelecturaanticipadasebeneficiadeunaestructuradealmacenamientodelMapade asignacindendices(IAM)mssencillayeficaz.ElIAMeselnuevomtodoconquecuentaSQLServer7.0 paragrabarlaubicacindelasextensiones(ochopginasdedatosodelainformacindelndicedeSQL Server,loquehaceuntotalde64KBdeinformacinporextensin).ElIAMesunapginade8KBque empaquetainformacin,relativaaquextensionesdelintervalodeextensionesqueabarcaelIAMcontienen losdatosrequeridos,deformacompacta(atravsdeunmapadebits).Lanaturalezacompactadelas pginasdelIAMhacequeseleanrpidamenteytiendeaconservarlaspginasdelIAMqueseutilizancon regularidadenlacachdelbfer. Mediantelacombinacindelainformacindelasconsultasqueseobtienedelprocesadordeconsultasyla rpidarecuperacindelaubicacindetodaslasextensionesquehayqueleerdelaspginasdelIAM,el Administradordelecturaanticipadapuedeconstruirvariassolicitudesdelecturasecuencial.Laslecturasde discosecuencialesde64KBproporcionanunrendimientodeE/Sdediscoextremadamentebueno. SQLServer:Administradordebfer,pginasdelecturaanticipada"eselcontadordelMonitorderendimiento importantequehayquevigilarconrespectoalAdministradordelecturaanticipadadeSQLServer.Para obtenermsinformacin,ejecuteelcomandoDBCCPERFMON(IOSTATS).Entrelainformacinseencuentra "Pginasdelecturaanticipadaencontradasencach"y"Pginasdelecturaanticipadacolocadasencach". Siyasehaaplicadoelalgoritmohashenlapgina(esdecir,laaplicacinlaleeprimeroylalecturaanticipada noeranecesaria),stacuentacomouna"pginaencontradaenlacach".Siannosehaaplicadoel algoritmohash(esdecir,unalecturaanticipadacorrecta),cuentacomouna"pginacolocadaenlacach". UnaprecaucinquehayquetenerconelAdministradordelecturaanticipadaesquedemasiadalectura anticipadapuedeserperjudicialglobalmenteparaelrendimiento,yaquepuedellenarlacachdepginasque nosonnecesarias,puestoquerequierenunaE/SyCPUadicionalesquepodranutilizarseparaotrosfines.La solucinesunobjetivodeajustedelrendimientogeneral,paraasegurarsedequetodaslasconsultasSQLse ajustandemodoqueenlacachdelbfersloseincluyeunnmeromnimodepginas.Seranecesario utilizarelndicecorrectoparaeltrabajocorrecto.Guardelosndicesagrupadosparaquelasexploracionesde losintervalosseaneficacesydefinalosndicessinagruparparafacilitarlabsquedarpidadefilas individualesydeconjuntosdefilasmenores.Tengaencuentaqueslositieneintencindequeunatabla tengaunsolondiceyquevaautilizarloparairaextraerfilasindividualesypequeosconjuntosdefilas,debe agruparlo,yaquelosndicesagrupadossonmsrpidosquelosquenoestnagrupados(peronoporla mismaescaladrsticaqueenlasexploracionesdeintervalos). Paraobtenermsinformacin,busquelascadenas"leerpginas","DBCCPERFMON","Arquitecturade tablasendices","Estructurasdemontn"y"pginasdelecturasanticipadas"enlosLibrosenpantalladeSQL Server.

RendimientodeE/Sdedisco

RendimientodeE/Sdedisco
AlconfigurarunservidorSQLServerqueslovatenerunospocosgigabytes(GB)dedatosyenelquenohay unagranactividaddelecturanideescritura,noesmuyimportantepreocuparsedelaE/Sdedisconide equilibrarlaactividaddeE/SdeSQLServerenlosdiscosdurosparaobtenerelmximorendimiento.Sin embargo,paracrearbasesdedatosSQLServermayoresquevanacontenercientosdegigabytesdedatoso quevanatenermuchaactividaddelecturaoescritura,elobjetivodelaconfiguracindebeserobtenerel mximorendimientodeE/SdediscodeSQLServerqueequilibrelacargaenvariosdiscosduros.

CmoserelacionanlasvelocidadesdetransferenciadiscoanunciadasconSQL Server
Unodelosaspectosmsimportantesdelajustedelrendimientodelasbasesdedatoseselajustedel rendimientodeE/S.Contodaseguridad,SQLServernoesunaexcepcinaestafilosofa.AmenosqueSQL ServerseejecuteenunamquinaconsuficientememoriaRAMcomoparaalbergartodalabasededatos,el rendimientodeE/SsedictarporlavelocidadenqueelsubsistemadeE/Sdediscopuedeprocesarlas lecturasylasescriturasdedatosdeSQLServer. UnareglageneraltilquehayquerecordaresqueeltpicodiscoduroWideUltraSCSI3escapazde proporcionaraWindowsySQLServeralrededorde75operacionesdeE/Snosecuenciales(aleatorias)y150 secuencialesporsegundo.Lavelocidaddetransferenciaanunciada,desdeelpuntodevistademegabytes (MB),deestosdiscosdurosseencuentraentornoalos40MBporsegundo.Tengaencuentaqueesmucho msprobablequelosservidoresdebasesdedatosestnrestringidosporlas75o150transferenciasdeE/S porsegundoqueporlavelocidaddetransferenciade40MBporsegundo.Estosemuestraenlossiguientes clculos: (75operacionesaleatoriasdeE/Sporsegundo)X(transferenciade8KB)=600KBporsegundo EsteclculoindicaqueefectuandooperacionesdeSQLServeraleatoriasdelecturaoescrituraenundisco durodeterminado(lecturasyescriturasenunasolapgina),esrazonableesperarunacapacidadmximade procesamientodeE/Sde600kilobytes(0,6megabytes)porsegundodedichodiscoduro,queesmuyinferior alacapacidaddegestindeE/Sanunciadade40MBporsegundodelaunidad.Lossubprocesosdetrabajo deSQLServer,elpuntodecomprobacinylaescrituradiferidarealizanlaE/Sentamaosdetransferenciade 8KB. (150operacionessecuencialesdeE/Sporsegundo)X(transferenciade8KB)=1.200KBporsegundo EsteclculoindicaqueefectuandooperacionesdeSQLServersecuencialesdelecturaoescrituraenundisco durodeterminado(lecturasyescriturasenunasolapgina),esrazonableesperarunacapacidadmximade procesamientodeE/Sde1.200kilobytes(1,2megabytes)porsegundodedichodiscoduro, (75operacionesaleatoriasdeE/Sporsegundo)X(transferenciade64KB)=4.800KB(4,8MB)porsegundo Elclculoanteriorilustraunodelospeoresescenariosposiblesparalaslecturasanticipadas,enelquese suponequetodaslasE/Ssonaleatorias.Tengaencuentaqueinclusoenunasituacincompletamente aleatoria,eltamaodetransferenciade64KBsigueproporcionandounavelocidaddetransferenciadeE/S muchomejor(4,8MBporsegundo)quelasvelocidadesdetransferenciadepginasindividuales(0,6y1,2MB porsegundo): (150operacionessecuencialesdeE/Sporsegundo)X(transferenciade64KB)=9,600KB(9,6MB)por segundo EsteclculoindicaquehaciendooperacionesdeSQLServersecuencialesdelecturaoescrituraenundisco durodeterminado,esrazonableesperardedichodiscodurounacapacidadmximadeprocesamientodeE/S de9,6MBporsegundo,queesmuchomejorqueelcasodelaE/Saleatoria.ElAdministradordelectura anticipadarealizalaE/Sdediscoenlavelocidaddetransferenciade64KBeintentaorganizarsuslecturasde talformaquelasexploracionesdelecturaanticipadaserealicendeformasecuencial(loqueamenudose

talformaquelasexploracionesdelecturaanticipadaserealicendeformasecuencial(loqueamenudose denomina"enserie"o"enelordendeldisco").MientrasqueelobjetivodelAdministradordelecturaanticipada esrealizarlasoperacionesdeE/Sdeformasecuencial,lasdivisionesdepginastendernaoriginarquelas extensionesseleandeformanosecuencialenlugardesecuencialmente.staesunadelasrazonesporlas queestanimportanteeliminaryimpedirlasdivisionesdepginas. ElAdministradorderegistroescribirsecuencialmenteenlosarchivosderegistroentamaosquelleganhasta los32kilobytes.

OperacionesdeE/Sdediscosecuencialesfrentealasnosecuenciales
Lostrminossecuencialynosecuencial(aleatorio)sehanutilizadoconprofusinparahacerreferenciaalas operacionesdediscoduro.Merecelapenadetenerseunmomentoparaexplicarloquesignificanestos trminosenrelacinconlasunidadesdedisco.Losdiscosdurossecomponendeunconjuntodediscosde unidades.Cadaunodeestosdiscosdeunidadproporcionaserviciosparalasoperacionesdelecturay escritura,eincluyeunconjuntodebrazos,concabezasdeescrituraylectura,quepuedenrecorrerlosdiscosy leerlainformacinoescribirdatoseneldisco.EnloquerespectaaSQLServer,haydospuntosimportantes queconvienerecordaracercadelosdiscosduros: Lascabezasdelecturayescrituraylosbrazosasociadosdeldisconecesitanmoverseparaencontrary realizarsutrabajoenlaubicacindeldiscoquehansolicitadoSQLServeryWindows.Silosdatosse encuentranenubicacionesnosecuencialesdelosdiscosdeunidad,eldiscodurotardamuchoms tiempoenmoverelbrazodeldiscoylacabezadelecturayescrituraatodaslasubicacionesnecesarias. Estocontrastaconelcasosecuencial,enelquetodoslosdatosnecesariosseencuentranenuna seccinfsicacontinuadeldisco,porloqueelbrazodeldiscoylascabezasdelecturayescriturarealizan movimientosmnimosparallevaracabolasoperacionesdeE/Sdedisconecesarias.Ladiferenciade tiempoentrelasoperacionesnosecuencialesylassecuencialesesimportante,alrededorde50 milisegundosporbsquedanosecuencialfrentealos23milisegundosdelasbsquedas secuenciales.Tengaencuentaqueestostiempossonestimacionesaproximadasyquevariarnen funcindeladistanciaalaqueseencuentrenlosdatosnosecuencialesdistribuidosporeldisco,dela velocidadalaquepuedangirarlosdiscos(enRPM)ydeotrosatributosfsicosdeldiscoduro.Loque hayquerecordaresquelaE/SsecuencialestilparaelrendimientodeSQLServer. Yasehamencionadoenestedocumentoquelosdiscosdurosestndaradmitenalrededorde75E/Sno secuencialesy150secuencialesporsegundo.Esimportanterecordarquesetardacasielmismotiempo enleeroescribir8kilobytesqueenleeroescribir64kilobytes.Enelintervaloentre8yalrededorde64 KB,esenelmovimientodelbrazodeldiscoydelascabezasdelecturayescrituraesenelquese inviertelamayorpartedeltiempodelasoperacionesdetransferenciadeE/S.Porlotanto, matemticamentehablando,esbeneficiosorealizartransferenciasdediscode64KBsiemprequesea posiblecuandohayaquetransferirmsde64KBdedatosSQL,yaqueunatransferenciade64KBes esencialmentetanrpidacomounade8KByqueencadatransferenciaseprocesaochovecesla cantidaddedatosSQLServer.RecuerdequeelAdministradordelecturaanticipadarealizasus operacionesdediscoenfragmentosde64KB(sedenominanextensionesdeSQLServer).El AdministradorderegistrotambinrealizaescriturassecuencialesentamaosdeE/Smayores.Lo principalquehayquerecordaresqueparaSQLServeresbeneficiosohacerunbuenusodel AdministradordelecturaanticipadaysepararlosarchivosderegistrodeSQLServerdeotrosarchivosa losquesehatenidoaccesodeformanosecuencial. Loslectoresinteresadosenobtenermsinformacinacercadelosdiscosdurosfsicosdebenconsultarel documento"DiskSubsystemPerformanceandScalability(Rendimientoyescalabilidaddelsubsistemade discos)"deCompaq,cuyaubicacinseindicaenlaseccin"Paraobtenermsinformacin",queseencuentra alfinaldeestedocumento.

LasvelocidadesdetransferenciadeE/Sdediscofrentealasvelocidadesde transferenciadelacontroladoradeRAIDfrentealanchodebandadelbusPCI

Losdiscosdurosestndarproporcionanunavelocidaddetransferenciamximadealrededorde40 megabytesporsegundoo75transferenciasdedisconosecuencialeso150secuencialesporsegundo.Las controladorasdeRAIDmshabitualesanuncianquetienenunavelocidaddetransferenciadealrededorde40 megabytesporsegundoo(muyaproximadamente)2.000transferenciasdediscoporsegundo.Losbusesde Interconexindecomponentesperifricos(PCI)tienenunavelocidaddetransferenciatericadealrededorde 133megabytesporsegundo,einclusomayor.Lasvelocidadesdetransferenciarealesquepuedeobtenerun dispositivodifierendelasanunciadas,peroesocarecedeimportanciaparaeltemaquenoscompete.Loque realmenteesimportanteessabercmoutilizarestastasasdetransferenciacomopuntodepartidapara determinarelnmerodediscosdurosquehayqueasociaracadaunadelascontroladorasdeRAIDy,asu vez,cuntasunidadesmscontroladorasdeRAIDpuedenconectarseaunbusPCIsinproblemasdecuellos debotellaenlaE/S. Enlaseccin"CmoserelacionanlasvelocidadesdediscoanunciadasconSQLServer",sehacalculadoque lacantidadmximadedatosSQLServerquesepuedeleeroescribirenundiscoduroporsegundoesde9,6 MB.SisepartedelabasedequeunacontroladoradeRAIDpuedegestionar40MBporsegundo,para calcularaproximadamenteelnmerodediscosdurosquesedebenasociaraunacontroladoradeRAIDhay quedividir40entre9,6,loquedacomoresultadoaproximadoes4.EstosignificaquecuandoSQLServerslo realizalaE/Ssecuencialde64KBdebeasociarseunmximode4unidadesadichacontroladora.Delmismo modo,previamentesecalculqueconlaE/Snosecuencialde64KB,lacantidadmximadedatosenviada desdeeldiscoduroalacontroladoraserade4,8MBporsegundo.Aldividir40MBporsegundoentre4,8MB porsegundoelresultadoesdeaproximadamente8,loquesignificaqueenelescenarionosecuencialde64 KBnosepuedenasociarmsde8discosdurosalanicacontroladora.Elescenariodetransferenciade datosaleatoriade8KBeselquerequieremayornmerodeunidades.Sisedivide40entre0,6sedetermina quesenecesitanalrededorde66unidadesparasaturarunacontroladoradeRAIDquerealiceelcienporcien delaslecturasyescriturasde8KB.stenoesunescenariorealista,yaquelalecturaanticipadaylaescritura delregistroutilizarnunostamaosdetransferenciasuperioresalos8KByesmuyimprobablequeSQL ServerrealiceelcienporciendelasE/Saleatorias. OtraformadeaveriguarelnmerodeunidadesquehayqueasociaraunacontroladoradeRAIDesfijarseen lastransferenciasdediscoporsegundoenlugardeenlosmegabytesporsegundo.Siunaunidaddiscoduro escapazderealizar75E/Snosecuenciales(aleatorias)porsegundo,lgicamente26discosdurostrabajando conjuntamente,enteora,podranproducir2.000E/Snosecuencialesporsegundo,suficientesparaalcanzarla mximacapacidaddegestindeE/SdeunasolacontroladoradeRAID.Porotraparte,slosenecesitaran 13discosdurosparaproducir2.000E/SsecuencialesporsegundoyhacerquelacontroladoradeRAID funcionealmximorendimiento,yaqueunsolodiscoduropuedemantener150E/Ssecuencialespor segundo. PasemosalbusPCI.Tengaencuentaquesonmuchomenosfrecuentesloscuellosdebotellaenla controladoradeRAIDyenelbusPCIquelosdeE/Srelacionadosconlosdiscosduros.Peroparaejemplificar mejoreltema,supongaqueesposibleconservarunconjuntodediscosdurosasociadosaunacontroladorade RAIDlosuficientementeocupadacomoparaquesetransmitan40MBporsegundoatravslacontroladora.La siguientepreguntasera,"cuntascontroladorasdeRAIDpuedenconectarsedeformaseguraalbusPCIsin arriesgarseaqueseproduzcauncuellodebotelladeE/SenelbusPCI?".Pararealizarunaestimacin aproximada,esnecesariodividirlacapacidaddeprocesamientodeE/SdelbusPCIentrelacapacidadde procesamientodeE/SdelacontroladoradeRAID:133MBporsegundodivididosentre40MBporsegundo ofreceelresultadodequeesposibleconectaraproximadamentetrescontroladorasdeRAIDaunsolobus PCI.TengaencuentaquelosservidoresdemayortamaocuentanconmsdeunbusPCI,porloque aumentaraelnmerodecontroladorasdeRAIDquesepodraninstalarenunsoloservidor. Estosclculosayudanailustrarlarelacindelasvelocidadesdetransferenciadelosdistintoscomponentes queconstituyenunsubsistemadeE/Sdedisco(discosduros,controladorasdeRAIDybusPCI)ynohayque tomarlosliteralmente.Ellosedebeaqueenlosclculossedaporsupuestoquetodoslosaccesosalosdatos sonsecuencialesonosecuenciales,loqueesmuyimprobablequeocurraenalgnentornodeservidoresde basesdedatosdeproduccin.Enrealidad,loqueseproduciresunamezcladeE/Ssecuencialesyno secuencialesde8yde64KB.Hayotrosfactoresquedificultanelclculoexactodelnmerodeoperacionesde E/Ssimultneasquepuedenrealizarseatravsdeunconjuntodediscosduros.Lacachdelecturayescritura

E/Ssimultneasquepuedenrealizarseatravsdeunconjuntodediscosduros.Lacachdelecturayescritura entarjetaquepuedenutilizarlascontroladorasdeRAIDaumentalacantidaddeE/Squepuedecrearun conjuntodeunidades.Elclculodelnmeroadicionalesdifcilporlamismaraznqueesdifcilindicarel nmeroexactodeE/Sde8KBfrenteaE/Sde64KBquevaanecesitarunentornoSQLServer. PeroesdeesperarqueestaseccinhayaayudadoadarunavisindeloquerealmentesignificanenSQL Serverlasvelocidadesdetransferenciaqueseanuncian.

RAID
Silaescaladelasbasesdedatossepasaunospocosgigabytes,esimportantetenerconocimientosbsicos delatecnologaRAID(Matrizredundantedediscoseconmicos)ydesurelacinconelrendimientodelas basesdedatos. LasventajasdeRAIDson: Rendimiento.LascontroladorashardwaredeRAIDdividenlaslecturasyescriturasdetodoslosdatos deWindowsydelasaplicaciones(comoSQLServer)enfragmentos(normalmenteentre16y128KB) queserepartenentretodoslosdiscosqueparticipanenlamatrizdeRAID.Ladivisindelosdatosen unidadesfsicascomostatieneelefectodedistribuiruniformementelacargadetrabajodeE/Sde escrituraylecturaentretodoslosdiscosdurosfsicosqueparticipanenlamatrizdeRAID,loque incrementaelrendimientodeE/Sdedisco,yaquelosdiscosdurosqueparticipanenlamatrizdeRAID comoconjuntosemantienenocupadosporigual,enlugardequealgunosdiscostengancuellosde botelladebidoaunairregulardistribucindelassolicitudesdeE/S. Toleranciaaerrores.RAIDproporcionaproteccinfrenteaunposibleerroreneldiscoduroyla resultanteprdidadedatosmediantedosmtodos:reflejoyparidad. ElReflejoseimplementamediantelaescrituradeinformacinendosconjuntosdeunidades,unaacadalado delosparesdeunidadesreflejados.Siseproducelaprdidadeunaunidaddelaquesehayacreadootra reflejada,losdatosdelaunidadperdidasepuedenreconstruirsustituyendolaunidadquehafalladoy reconstruyendolosdatosapartirdelaunidadcoincidentedelotroladodelconjuntodereflejos.Lamayorade lascontroladorasdeRAIDproporcionanlacapacidaddereemplazareldiscoconerroresydereconstruirlo desdeelotroelementodelparreflejadomientrasWindowsySQLServerestnactivos(denominados normalmentediscos"intercambiablesencaliente").UnaventajadeestemtodoesqueeslaopcindeRAID quemejorfuncionacuandoserequieretoleranciaaerrores.CadaescrituradeSQLServerenelreflejocuesta dosoperacionesdeE/Sdedisco,unaacadaladodelconjuntodereflejos.Laotraventajaesqueelreflejo proporcionamstoleranciaaerroresquelasimplementacionesdelaparidaddeRAID.Elreflejopuede mantener,almenos,elerrordeunaunidadypuedesobreviviralerrordelamitaddelasunidadesdelconjunto dereflejossinqueeladministradordelsistematengaqueapagarelservidoryrealizarlarecuperacindesde unacopiadeseguridaddelosarchivos.Ladesventajadeestemtodoeselcosto.Elcostoendiscosdel reflejoesunaunidadporcadavolumendedatoscorrespondienteaunaunidad.RAID1ysuhbrido,RAID0+1 (alqueavecessedenominaRAID100/1),seimplementanatravsdelreflejo. Laparidadseimplementamedianteelclculodelainformacinderecuperacinreferentealosdatosescritos eneldiscoyescribiendoestainformacindeparidadenlasrestantesunidadesqueformanlamatrizdeRAID. Enelhipotticocasodequefallealgunaunidad,seinsertaunanuevaenlamatrizdeRAIDylosdatosdela unidadquehafalladoserecuperantomandolainformacinderecuperacin(paridad)escritaenlasunidades restantesyutilizandoestainformacinparavolveragenerarlosdatosdelaunidadquehafallado.RAID5ysus hbridosseimplementanatravsdelaparidad.Laventajadelaparidadeselcosto.Paraprotegercualquier nmerodeunidadesconRAID5,slosenecesitaunaunidadadicional.Lainformacindeparidadse distribuyeuniformementeentretodaslasunidadesqueparticipanenlamatrizdeRAID5.Lasdesventajasdela paridadsonelrendimientoylatoleranciaaerrores.Debidoaloscostosadicionalesasociadosconelclculoy laescrituradelaparidad,RAID5requierecuatrooperacionesdeE/SdediscoporcadaescrituradeWindows NT/SQLServer,encomparacinconlasdosoperacionesdeE/Sdedisconecesariasparaelreflejo.Los costosdelasoperacionesdeE/Sdelecturasonlosmismosparaunmtodoqueparaelotro.Adems,slo puedehaberunnicodiscoduroconerroresenRAID5antesdequehayaquedesconectarlamatrizyrealizar

puedehaberunnicodiscoduroconerroresenRAID5antesdequehayaquedesconectarlamatrizyrealizar unarecuperacindesdeunacopiadeseguridadpararestaurarlosdatos. Reglageneral:asegresedeutilizartantosdiscoscomoseannecesariosparaconseguirunslidorendimiento deE/Sdedisco.ElMonitorderendimientoindicarsihayalgncuellodebotelladeE/Sdediscoenuna matrizdeRAIDdeterminada.PrepreseparaagregardiscosyredistribuirlosdatosenlasmatricesdeRAIDo enloscanalesSCSItantocomoseanecesarioparaequilibrarlaE/Sdediscoymaximizarelrendimiento. EfectodelacachentarjetadelascontroladorashardwaredeRAID MuchascontroladorashardwaredeRAIDtienenalgunaformadecachdelecturay/oescritura.Aprovecheeste almacenamientoenmemoriacachconSQLServer,yaquemejoraconsiderablementelacapacidadefectiva degestindeE/Sdelsubsistemadediscos.Elprincipiodeestosmecanismosdealmacenamientoencach queutilizancontroladorasesrecopilarlassolicitudesdeE/Spequeasylaspotencialmentenosecuenciales queprovienendelservidorhost(deSQLServer)eintentaragruparlasenlotesconotrassolicitudesdeE/S duranteunospocosmilisegundosconelfindelasE/SagrupadaspuedanformarsolicitudesdeE/Sms grandes(entre32y128KB)yquizssecuencialesqueseenvanalosdiscosduros.Esteprincipio,sabiendo quelasE/Sgrandesysecuencialesmejoranelrendimiento,ayudaaproducirmejorrendimientodeE/Sde disco,dadoelnmerofijodeE/SquelosdiscosdurospuedenproporcionaralacontroladoradeRAID.Nose pretendedecirqueelalmacenamientoencachdelascontroladorasdeRAIDpermitamgicamentequelos discosdurosprocesenmsE/Sporsegundo,sinoquelacachdelascontroladorasdeRAIDsimplemente utilizaciertaorganizacinparaordenarlassolicitudesdeE/Sentrantesconelfindequestashaganelmejor usoposibledelasubyacentecantidadfijadecapacidaddeprocesamientodeE/Squetienenlosdiscosduros. EstascontroladorasdeRAIDsuelenprotegersusmecanismosdealmacenamientoencachconalgn sistemadealimentacindeseguridad.Estesistemadealimentacinpuedeayudaramantenerlosdatos escritosenlacachduranteunperododetiempo(quizdedas)porsiseprodujeseuncortedela alimentacinelctrica.Yenlosentornosdeproduccin,ofrecenalservidordebasesdedatosanms proteccin,yaqueleproporcionanunaproteccincorrectamedianteunsistemadealimentacin ininterrumpida(SAI)conelfindequelacontroladoradeRAIDtengaanmsproteccinyunmayortiempo paralasbaterasdereserva,quesepuedeutilizarparavaciarlosdatosadiscoencasodequeseinterrumpa laalimentacindelservidor. NivelesdeRAID RAID1yRAID0+1ofrecenlasmejoresproteccionesdedatosyelmejorrendimientodetodoslosnivelesde RAID,peronecesitanunmayornmerodediscos.Sielcostoquehayaqueefectuarendiscosdurosnoesun factorqueimponganingnlmite,RAID1oRAID0+1sonlasmejoresopcionesdeRAIDenloqueserefiere tantoalrendimientocomoalatoleranciaaerrores. RAID5ofrecetoleranciaaerroresalmejorcosto,perosurendimientodeescrituraeslamitaddeldeRAID1y 0+1debidoalaE/SadicionalqueRAID5tienequehacerparaleeryescribirlainformacindeparidadenel disco.RAID5noestantoleranteaerrorescomoRAID1y0+1. ElmejorrendimientodeE/SdediscoseobtieneconRAID0(creacindebandassinproteccindetolerancia aerrores),perodadoqueRAID0notienetoleranciaaerrores,estenivelslosepuedeutilizarenlos servidoresdebasesdedatosdedesarrollooenotrosentornosdepruebas. MuchoscontroladoresdematricesdeRAIDcuentanconlaopcindeRAID0+1(alaquetambinsedenomina RAID10oRAID0/1)sobrediscosdurosfsicos.RAID0+1esunasolucinRAIDhbrida.Enelnivelinferior, reflejatodoslosdatosigualqueelRAID1normal.Enelnivelsuperior,lacontroladoracreabandasdedatosen todaslasunidades(comoRAID0).Deestamanera,RAID0+1proporcionalamximaproteccin(reflejo)con elmayorrendimiento(creacindebandas).Estasoperacionesdecreacindebandasyreflejoson transparenteparaWindowsySQLServer,yaquelasgestionalacontroladoradeRAID.Ladiferenciaentre RAID1yRAID0+1seencuentraenloscontroladoresdehardware.RAID1yRAID0+1requierenelmismo nmerodeunidadesparaunacantidaddealmacenamientodeterminada.Paraobtenermsinformacin

nmerodeunidadesparaunacantidaddealmacenamientodeterminada.Paraobtenermsinformacin acercadelaimplementacinenRAID0+1dedeterminadoscontroladoresdeRAID,pngaseencontactocon proveedordehardwarequehayafabricadolacontroladora. Lafigura1muestralasdiferenciasentreRAID0,RAID1,RAID5yRAID0+1.Tengaencuentaqueparatener cuatrodiscoscondatosimportantes,RAID1(yRAID0+1)necesitaochodiscos,mientrasqueRaid5slo necesitacinco.Asegresedepreguntaralosproveedoresdehardwarepertinentesparaobtenerms informacinacercadelaimplementacindeRAIDespecficadelhardwaredelservidordebasesdedatos.

Figura1NivelesdeRAIDmsfrecuentes ExpansinenlneadeRAID staesunacaractersticamuytilquepermiteagregardiscosdinmicamenteaunamatrizdeRAIDfsica mientrasSQLServerestconectado,siemprequehayaranurasdeconexinencalientedisponibles.Muchos proveedoresdehardwareofrecencontroladorashardwaredeRAIDquepuedenproporcionaresta funcionalidad.Sevuelvenacrearbandasdedatosautomticamenteentodaslasunidadesdeformauniforme, inclusoenlaunidadrecinagregada,ynoesnecesarioapagarSQLServeroWindows.Esconveniente aprovecharestafuncionalidaddejandolibreslasranurasdeconexinencalientedeldiscodurodelas armazonesdelasmatricesdediscos.Porconsiguiente,siSQLServerponeapruebadeformaregularuna matrizdeRAIDconsolicitudesE/S(loqueindicarlalongituddelacoladediscosenlaletradelaunidad lgicadeWindowsasociadacondichamatrizdeRAID),esposibleinstalarunoovariosdiscosdurosnuevos enlaranuradeconexinencalientemientrasSQLServersiguefuncionando.LacontroladoradeRAID redistribuiralgunosdelosdatosSQLexistentesalasnuevasunidadesconelfindequesedistribuyan uniformementeportodaslaunidadesdelamatrizdeRAID.Acontinuacin,lacapacidaddeprocesamientode E/Sdelasnuevasunidades(75E/Snosecuencialeso150secuencialesporsegundo)seagregaala capacidaddeprocesamientoglobaldeE/SdelamatrizdeRAID. MonitorderendimientoyRAID EnelMonitorderendimiento,losobjetosdediscolgicoydiscofsicoproporcionanlamismainformacin.La diferenciaesquelosdiscoslgicosdelMonitorderendimientoestnasociadosconloqueWindows consideralaletradeunaunidadlgica.LosdiscosfsicosdelMonitorderendimientoestnasociadosconlo queWindowsconsideraunnicodiscodurofsico. ParahabilitarloscontadoresdelMonitorderendimientoseutilizaelcomandodiskperf.exedesdelalneade comandosdeunaventanadelsmbolodelsistemadeWindows.Utilice"diskperfy"paraqueelMonitorde rendimientoinformedeloscontadoresdediscoslgicosyfsicos.Estecomandofuncionacuandoseutilizan discosdurosoconjuntosdediscosdurosycontroladoresdeRAID,sinutilizarRAIDporsoftwaredeWindows

discosdurosoconjuntosdediscosdurosycontroladoresdeRAID,sinutilizarRAIDporsoftwaredeWindows NT. SiutilizaRAIDporsoftwaredeWindowsNT,use"diskperfye"paraqueelMonitorderendimientoinforme correctamentedeloscontadoresfsicosenlosconjuntosdebandasdeWindowsNT.Si"diskperfye"seutiliza juntoconlosconjuntosdebandasdeWindowsNT,loscontadoreslgicosnoproporcionarnlainformacin correctayhayqueignorarlos.Sisenecesitalainformacindeloscontadoresdediscoslgicosjuntocon conjuntosdebandasdeWindowsNT,utilice"diskperfy".Con"diskperfy"ylosconjuntosdebandasde WindowsNT,loscontadoresdediscoslgicosdarnlainformacincorrecta,peroloscontadoresdediscos fsicosnoladarnyhayqueignorarlos. TengaencuentaquelosefectosdelcomandodiskperfnoseproducenhastaquesehayareiniciadoWindows NT. TengaencuentatambinquelascontroladorashardwaredeRAIDpresentanvariosdiscosdurosfsicosque componenunsoloconjuntodereflejosoconjuntodebandasdeRAIDenWindows,comounsolodiscofsico. ElAdministradordediscosseutilizaparaasociarletrasdeunidadeslgicasaldiscofsicoynoesnecesario preocuparseporelnmerodediscosdurosqueestrealmenteasociadoaldiscodurofsicoquela controladoradeRAIDlehaofrecido. Perodesdeunaperspectivadeajustedelrendimiento,esmuyimportantesaberelnmerodeunidadesde discodurofsicoqueestnasociadasaunamatrizdeRAID,yaqueestainformacinsernecesariapara determinarelnmerodesolicitudesdeE/SdediscoqueWindowsySQLServerestnenviandoacadadisco durofsico.DividaelnmerodesolicitudesdeE/SdediscoqueelMonitorderendimientoindicaqueestn asociadasconundiscoduroentreelnmerodediscosdurosfsicosrealesquesesabequeestnendicha matrizdeRAID. ParaobtenerunaestimacinaproximadadelaactividaddeE/SpordiscoduroenunamatrizdeRAID, tambinesimportantemultiplicarelnmerodeE/SdeescriturasendiscoquecomunicaelMonitorde rendimientopor2(RAID1y0+1)opor4(RAID5).Elloproporcionarunrecuentomsprecisodelnmerode solicitudesdeE/Srealesqueseenvanalosdiscosdurosfsicos,yaquelosnmerosdecapacidaddeE/Sde losdiscosduros(75nosecuencialesy150nosecuencialesporunidad)seaplicanaestenivelfsico.Perono esperepodercalcularcontotalexactitudlacantidaddeE/Sllegadeestaformaalosdiscosduros,cuandola controladorahardwaredeRAIDutilizaelalmacenamientoencach,yaqueelalmacenamientoencachpuede cambiarconsiderablementelacantidaddeE/Squerealmentellegaalosdiscosdurosporlasrazonesya explicadas. EsmejorconcentrarseenlacoladediscosenlugardeenlaE/Srealpordisco,yaque,despusdetodo,por qupreocuparseporlaE/Ssinoestocasionandoningnproblema?Windowsnopuedeverelnmerode unidadesfsicasdelasmatricesdeRAID,porloqueparavalorarconprecisinlacoladediscospordisco fsico,esimportantedividirlalongituddelacoladediscosentreelnmerodeunidadesfsicasqueparticipan enlamatrizdediscosRAIDdehardwarequecontienelaunidadlgicaqueseestobservando.Estenmero debeserinferiora2enlosdiscosdurosquecontenganarchivosSQLServer. ParaobtenermsinformacinacercadeSQLServeryRAID,busquelascadenas"NivelesRAIDySQL Server","ComparacindediferentesimplementacionesdenivelesRAID","Supervisarlaactividaddeldisco", "Ejemplodesupervisindelrendimiento:identificaratascos","Acercadelassolucionesbasadasenhardware" y"RAID"enlosLibrosenpantalladeSQLServer. RAIDporsoftwaredeWindowsNT WindowsNTproporcionatoleranciaaloserroresdelosdiscosduros,yaquecuentaconconjuntosdereflejosy conjuntosdebandas(conosintoleranciaaerrores)atravsdelsistemaoperativoWindowsNTenlugarde controladorashardwaredeRAID.ElAdministradordediscosdeWindowsNTseutilizaparadefinirconjuntos dereflejos(RAID1)oconjuntosdebandasconparidad(RAID5).EladministradordeWindowsNTtambin permitedefinirconjuntosdebandassintoleranciaaerrores(RAID0).

permitedefinirconjuntosdebandassintoleranciaaerrores(RAID0). RAIDporsoftwareutilizarmsrecursosdeCPU,yaqueWindowsNTeselcomponentequegestionalas operacionesdeRAIDfrentealacontroladorahardwaredeRAID.Porconsiguiente,silosprocesadoresdel sistemaestncasialcienporciendesucapacidad,elrendimientoconelmismonmerodeunidadesde discoyRAIDporsoftwaredeWindowsNTpuedeseralgoinferiorquelasolucinRAIDdehardware.Pero habitualmente,RAIDporsoftwaredeWindowsNTayudaraunconjuntodeunidadesaatenderglobalmente lasE/SdeSQLServermejorquelasunidadesquepodranhacerlodeformaindependiente,loquereduceel peligrodecuellosdebotelladeE/SyllevaaunamayorutilizacindelaCPUporpartedeSQLServeryaun mejorrendimiento.RAIDdesoftwarepuedeofrecerunasolucinmseconmicaparaproporcionartolerancia aerroresaunconjuntodediscosduros. ParaobtenermsinformacinacercadelaconfiguracindeRAIDporsoftwaredeWindowsNT,consulteel Captulo4delaAyudaenpantalladeWindowsNTServer,"Planearunaconfiguracinconfiable".Tambin puedebuscarlascadenas"AcercadelreflejoyduplicacindediscosbasadosenWindowsNT"y"Acercade lacreacindebandasendiscoylacreacindebandasconparidadbasadasenWindowsNT"enlosLibros enpantalladeSQLServer.

ParalelismodeE/Sdedisco
CuandoseutilizanbasesdedatosSQLServerpequeasqueseencuentranenpocasunidadesdedisco,es muyprobablequeelparalelismodeE/Sdedisconoentreenjuego.Perosiseutilizangrandesbasesdedatos SQLServeralmacenadasenmuchasunidadesdedisco,elrendimientomejorarsiseutilizaelparalelismode E/SdediscoparahacerunusoptimodelacapacidaddeprocesamientodeE/Sdelsubsistemadediscos. LatcnicamssencillaparacrearelparalelismodeE/Sdediscoescrearunsolo"conjuntodeunidades"que dservicioatodoslosarchivosdelasbasesdedatosSQLServer,exceptoalosarchivosderegistrosde transacciones.ElconjuntopuedeserunasolamatrizdeRAIDqueserepresenteenWindowsNTcomouna unidadfsicaounconjuntomayorquepuedeconfigurarseutilizandovariasmatricesdeRAIDyarchivoso gruposdearchivosSQLServer.CadaarchivoSQLServersepuedeasociaraunamatrizdeRAIDysepueden combinarvariosarchivosenungrupodearchivosSQLServer.Acontinuacin,puedecrearseunabasede datosenelgrupodearchivosparaquelosdatosseextiendanuniformementeportodaslasunidadesypor todaslascontroladorasdeRAID.Lametodologade"conjuntodeunidades"dependedequeRAIDdividalos datosalolargodetodaslasunidadesfsicasparagarantizarunaccesoparaleloadichosdatosdurantelas operacionesdelservidordebasesdedatos. EstametodologasimplificaelajustedelrendimientodelasE/SdeSQLServer,yaquelosadministradoresde basesdedatossabenquehayunasolaubicacinfsicaparacrearlosobjetosdebasesdedatos.Esposible vigilarlacoladediscosdelconjuntodeunidadesy,siesnecesario,selepuedenagregarmsunidadesde discoduroparaimpedirqueseproduzcalacoladediscos.Estatcnicaayudaaoptimizarloscasosms frecuentes,enlosquenosesabequpartesdelabasededatospuedennecesitarmayoruso.Esmejorno tenerningunapartedelacapacidadtotaldeE/Sdisponibleseparadaenotraparticindediscosimplemente porqueelcincoporcientodeltiempoSQLServerpuedeestarhaciendoE/Senella.Lametodologade "conjuntodeunidades"puedeayudaraquetodalacapacidaddeE/Squepuedautilizarseestsiempre disponibleparalasoperacionesdeSQLServer. TengaencuentaquelosarchivosderegistrodeSQLServersiempredebenestarfsicamenteendiscosduros distintosseparadosdelosrestantesarchivosdebasesdedatosdeSQLServer.Enelcasodelosservidores SQLServerconbasesdedatosconmuchaactividad,losarchivosdelregistrodetransaccionesdebenestar fsicamenteseparadosentres.Elregistrodetransaccioneses,principalmente,unaE/Sdeescritura secuencial.SeobtienenunagranmejoraenelrendimientodeE/Ssiseseparalaactividaddelregistrode transaccionesdeotrasactividadesdeE/Sdedisconosecuenciales,yaqueellopermitequelosdiscosduros quecontenganlosarchivosderegistropuedanconcentrarseenlaE/Ssecuencial.Tengaencuentaquehay ocasionesenlasqueesnecesarioleerelregistrodetransaccionescomopartedelasoperacionesdeSQL Server,comolareplicacin,lasaccionesquesedeshacenylasactualizacionesdeferidas.LosservidoresSQL Serverqueparticipanenlareplicacindebenprestarespecialatencinparaasegurarsedequelosarchivos

Serverqueparticipanenlareplicacindebenprestarespecialatencinparaasegurarsedequelosarchivos delregistrodetransaccionestienensuficientecapacidaddeprocesamientodeE/Sdedisco,yaquetienen queproducirsemuchaslecturas. LaseparacinfsicadelosobjetosdeSQLServerdelrestodesubasededatosasociadaatravsde archivosygruposdearchivosSQLServerconllevaunmayortrabajoadministrativo.Peropuedemerecerla penaparainvestigartablasendicesmuyactivos.Mediantelaseparacindelamatrizdetablasodendices delosrestantesobjetosdebasededatos,esposiblerealizarvaloracionesprecisasdelosrequisitosdeE/S dedichoobjeto.Sinembargo,dichasvaloracionesnosonfcilesderealizarcuandotodoslosobjetosse encuentranenunconjuntodeunidadesgrande.EstetipodeseparacinfsicadeE/Spuedesertilduranteel desarrolloylaspruebasdelasbasesdedatosconelfindequelainformacindeE/Sdedichasbasesde datospuedarecopilarseyaplicarsealdiseodelacapacidaddelentornodeservidoresdelasbasesdedatos deproduccin. stassonlasreasdelaactividaddeSQLServerquepuedensepararseendistintosdiscosduros, controladoresdeRAID,canalesPCI(ocombinacionesdelostres): Archivosdelregistrodetransacciones Tempdb Archivosdebasededatos Tablasasociadascongrancantidaddeactividaddeconsultaoescritura ndicesnoagrupadosasociadoscongrancantidaddeactividaddeconsultaoescritura LaseparacinfsicadelasactividadesdeE/SdeSQLServerresultabastanteapropiadaparautilizar controladoreshardwaredeRAID,unidadesRAIDdeconexinencalienteylaexpansindeRAIDenlnea.El mtodoqueofrecemsflexibilidadeslaorganizacindelascontroladorasdeRAIDdemodoquese proporcioneuncanalSCSIdeRAIDindependienteacadaunadelasactividadesdeSQLmencionadas anteriormente.ParaaprovecharalmximolaexpansinenlneadeRAID(sisepuederealizaratravsdela controladoradeRAID),todosestoscanalesdebenestarconectadosaunarmariodeRAIDindependientede conexinencaliente.LasletrasdelasunidadeslgicasdeWindowsseasocianacadaunadelasmatricesde RAIDylosarchivosSQLServerpuedensepararseenlasdistintasmatricesdeRAIDbasndoseenlos patronesdeusodeE/Syaconocidos. ConestaconfiguracinesposiblevolverarelacionarlacoladediscosconuncanalSCSIdeRAIDdiferentey suarmariodeunidadescomoMonitorderendimientoinformadelcomportamientodelacoladurantelaprueba decargaodurantelascargasdeproduccinimportantes.SiunacontroladoradeRAIDounarmariode matricesdeunidadesadmitenlaexpansindeRAIDenlneayelarmariocuentaconranurasdisponiblespara discosdurosdeconexinencaliente,lacoladediscosdedichamatrizdeRAIDseresuelveagregndolams unidadeshastaqueelMonitorderendimientoindiquequelacoladediscosdedichamatrizdeRAIDha alcanzadounosnivelesaceptables(menosdedosparalosarchivosSQLServer).Todoesteprocesopuede realizarsemientrasSQLServerestconectado. TempdbesunabasededatosquecreaSQLServerparaqueseutilicecomoreadetrabajocompartidapara variasactividades,entrelasqueseincluyenlastablastemporales,laordenacin,lassubconsultasylos agregadosconGROUPBYuORDERBY,lasconsultasqueutilizanDISTINCT(hayquecreartablasdetrabajo temporalesparaeliminarlasfilasduplicadas),loscursoresylascombinacioneshash.Esconvenientequelas operacionesdeE/SdetempdbtenganlugarenparaleloconlasoperacionesdeE/Sdelastransacciones relacionadas.Dadoquetempdbesunreadeborradorqueseactualizaconmuchafrecuencia,laopcinRAID 5noseratanbuenacomolaopcinRAID10+1.Sisetieneencuentaquetempdbsereconstruyecadavez quesereiniciaelservidordebasesdedatos,RAID0sepuedeutilizarparatempdbenlasmquinasSQL Serverdeproduccin.RAID0proporcionaelmejorrendimientodeRAIDparatempdbconelmenornmerode unidadesfsicas.ElprincipalproblemaalutilizarRAID0paratempdbenunentornodeproduccinesquesise produjeraunerrorenalgunaunidadfsicadelamatrizdeRAID0,habraquedetenerSQLServeryvolvera iniciarlo,loquenohabraquehacersitempdbestuvieracolocadaenunamatrizdeRAID10+1. Paramoverlabasededatostempdb,utiliceelcomandoALTERDATABASEparacambiarlaubicacinfsica

Paramoverlabasededatostempdb,utiliceelcomandoALTERDATABASEparacambiarlaubicacinfsica delosarchivosdelnombredearchivolgicodeSQLServerasociadocontempdb.Porejemplo,paramover tempdbysuregistroasociadoalasnuevasubicacionesdelosarchivos,e:\mssql7yc:\temp,utilicelos siguientescomandos: alterdatabasetempdbmodifyfile(name='tempdev',filename='e:\mssql7\tempnew_location.mDF') alterdatabasetempdbmodifyfile(name='templog',filename='c:\temp\tempnew_loglocation.mDF') Encomparacinconlasbasesdedatosdelosusuarios,lasbasesdedatosmaster,msdbymodelnose utilizanmuchodurantelaproduccin,porloquehabitualmentenoesnecesariotenerlasencuentaenlamejora delrendimientodeE/S.Labasededatosmastersesueleutilizarsimplementeparaagregarnuevosiniciosde sesin,basesdedatos,dispositivosyotrosobjetosdelsistema. Losndicesnoagrupadosseencuentranenestructurasderbolesb,quepuedensepararsedelastablasde susbasesdedatosconelcomandoALTERDATABASE.Enelejemplosiguiente,elprimerALTER DATABASEcreaungrupodearchivos.ElsegundoALTERDATABASEcreaunarchivoconunaubicacin fsicaindependienteasociadaconelgrupodearchivos.Enestemomento,esposiblecrearlosndicesenel grupodearchivos,comosemuestraenelsiguientecdigoconlacreacindelndicellamadondice1. SP_HELPFILEmuestralosarchivosygruposdearchivospresentesenunabasededatosdeterminada. SP_HELP<nombreTabla>tieneunaseccinensusalidaqueproporcionainformacinacercadelosndices deunatablaylasrelacionesdesusgruposdearchivos.Paraobtenermsinformacin,busquelascadenas "ALTERDATABASE"y"sp_helpfile"enlosLibrosenpantalladeSQLServer. alterdatabasetestdbaddfilegroupgrupoPrueba1 alterdatabasetestdbaddfile(name=archivoPrueba, filename='e:\mssql7\test1.ndf')tofilegroupgrupoPrueba1 createtabletest1(col1char(8)) createindexindice1ontest1(col1)ongrupoPrueba1 sp_helpfile sp_helptest1 Paraobtenermsinformacin,busquelascadenas"Archivosygruposdearchivos","Colocarndicesen gruposdearchivos","Supervisarlaactividaddeldisco","Archivosygruposdearchivosfsicosdelabasede datos"y"Agregaryeliminararchivosdedatosyderegistrodetransacciones"enlosLibrosenpantalladeSQL Server.

ndicesdeSQLServer
YasehanexplicadolascaractersticasdeE/Sdelosdispositivosdehardwaredelservidor.Ahoraseexplicar cmoestncolocadosfsicamentelosdatosylasestructurasdelosndicesdeSQLServerenlasunidadesde disco.Sedescribirestrictamentelonecesarioacercadeestasestructurascomoparaquesepuedanaplicar losconocimientosalrendimientodeE/Sdedisco. TantolosdatoscomolaspginasdendicedeSQLServertienenuntamaode8kilobytes.Laspginasde datosdeSQLServercontienentodoslosdatosasociadosconlasfilasdelastablas,exceptolosdatosde textoydelasimgenes,encuyocaso,lapginadedatosdeSQLServerquecontienelafilaasociadaconla columnadetextoodeimgenescontendrunpunteroaunaestructuraderbolbdeunaovariaspginasde8 KBquecontienenlosdatosdetextoydelasimgenes. LaspginasdendicedeSQLServercontienensolamentelosdatosdelascolumnasqueconformanunndice determinado,loquesignificaquecomprimendeformaeficazlainformacinasociadaconmuchasmsfilasde unapginade8KBdeloquelohaceunapginadedatosde8KB.UnconceptodelrendimientodeE/S importantequesedebetenerencuentaesquelaventajaquesuponenlosndicesenelrendimientodeE/S provienedeestacompresindelainformacin.Elloocurresilascolumnasseleccionadasparaformarpartede unndiceformanunporcentajerelativamentebajodeltamaodelasfilasdelatabla.SiunaconsultaSQL

unndiceformanunporcentajerelativamentebajodeltamaodelasfilasdelatabla.SiunaconsultaSQL solicitaunconjuntodefilasdeunatablaenlaquelascolumnasdelaconsultacoincidancondeterminados valoresdelasfilas,SQLServerpuedeahorrartiempoyoperacionesdeE/Smediantelalecturadelaspginas dendiceylabsquedaenelladelosvalores,y,acontinuacin,teneraccesosolamentealasfilasdelatabla necesariasparasatisfacerlaconsulta,enlugardetenerqueejecutaroperacionesdeE/Spararastreartodas lasfilasdelatablahastaencontrarlasfilasrequeridas.Esteprocesosellevaacabosilosndicesdefinidos estncorrectamenteseleccionados. HaydostiposdendicesdeSQLServeryambosestncreadossobreestructurasderbolesbformadasa partirdepginasdendicede8KB.Ladiferenciaseencuentraenlaparteinferiordelasestructurasdelrbol b,quesedenominanniveldehojasenladocumentacindeSQLServer.Laspartessuperioresdelas estructurasdelosndicesdelrbolbseconocencomonivelesquenosondehojasdelndice.Enunatablade SQLServersedefineunaestructuraderbolbparacadaunodelosndices. Lafigura2muestralasdiferenciasestructuralesentrelosndicesagrupadosylosnoagrupados.Lospuntos clavequehayquerecordarsonqueenelcasodelosndicesnoagrupadoslosnodosdelniveldehojas contienensolamentelosdatosqueparticipanenelndice,juntoconpunterosparaencontrarrpidamentelos datosdelasfilasrestantesdelapginadedatosasociada.Enelpeorescenarioposible,cadaunodelos accesosalasfilasdesdeelndicenoagrupadonecesitarunaE/Sdedisconosecuencialadicionalpara recuperarlosdatosdelasfilas.Enelmejordeloscasos,muchasdelasfilasrequeridasestarnenlamisma pginadedatosy,porconsiguiente,permitirnrecuperarvariasfilasrequeridasconcadaunadelaspginas dedatosobtenida.Enelcasodelosndicesagrupados,losnodosdelniveldehojassonlasfilasdedatos realesdelatabla.Porlotanto,nosenecesitansaltosdelpunteroparalarecuperacindelosdatosdelatabla. Lasexploracionesdeintervalosbasadosenndicesagrupadosfuncionarnbien,yaqueelniveldehojasdel ndiceagrupado(porconsiguiente,todaslasfilasdedichatabla)estfsicamenteordenadoeneldiscoporlas columnasqueconformanelndiceagrupadoy,debidoaello,ejecutarlaE/Senlasextensionesde64KB.Es deesperarquesinohaymuchadivisindepginasenelrbolbdelosndicesagrupados(nivelesdehojaso nivelesquenosondehojas),estasE/Sde64KBsernfsicamentesecuenciales.Laslneasconpuntos indicanquehayotraspginasde8KBpresentesenlasestructurasderbolb,peroquenosemuestran.

Figura2Estructurasderbolbdelosndicesagrupadosynoagrupados

ndicesagrupados
Slopuedehaberunndiceagrupadoportabla.Hayunasencillaraznparaello.Mientrasquelaspartes superiores(comnmentedenominadasnivelesquenosondehojasenladocumentacindeSQLServer)dela estructuradelrbolbdelosndicesagrupadosestnorganizadasdelamismaformaquelasestructurasde rbolbdelosndicesnoagrupados,elnivelinferiordelrbolbdelosndicesagrupadossonlaspginasde datosde8KBrealesasociadasconlatabla.Aquhaydosimplicacionesenelrendimiento:

datosde8KBrealesasociadasconlatabla.Aquhaydosimplicacionesenelrendimiento: 1. LarecuperacindedatosSQLbasadaenunabsquedadeclavesenunndiceagrupadonorequiere ningnsaltodelpuntero(conunposiblecambionosecuencialdeubicacineneldiscoduro)parallegara lapginadedatosasociada,yaqueelniveldehojasdelndiceagrupadoyaeslapginadedatos asociada. 2. Elniveldehojasdelndiceagrupadoseordenaporlascolumnasqueconformandichondice.Dadoque elniveldehojasdelndiceagrupadocontienelaspaginasdedatosde8KBreales,estosignificaquelos datosdelasfilasdetodalatablaestnorganizadosfsicamenteeneldiscoduroenelordenque determinaelndiceagrupado,loqueproporcionaunaposibleventajaenelrendimientodeE/Salobtener unnmeroapreciabledefilasenestatabla(almenosmayorque64KB)basndoseenelvalordelndice agrupado,yaqueseutilizalaE/Sdediscosecuencial(amenosqueseproduzcaunadivisindepginas enestatabla,loqueseexplicarmsadelante,enlaseccin"ImportanciadeFILLFACTORyde PAD_INDEX").seeselmotivoporelqueestanimportanteseleccionarelndiceagrupadoenunatabla basndoseenunacolumnaqueseutilizarpararealizarexploracionesdeintervalospararecuperarun grannmerodefilas.

ndicesnoagrupados
Losndicesnoagrupadossonmstilesparaobtenerpocasfilasconunbuencriteriodeseleccinengrandes tablasdeSQLServerbasndoseenunvalorclave.Comosehamencionadoanteriormente,losndicesno agrupadossonrbolesbformadosapartirdepginasdendicede8KB.Elnivelinferior,oniveldehoja,del rbolbdelaspginasdendicecontienetodoslosdatosdelascolumnasqueconformabandichondice.Sise utilizaunndicenoagrupadopararecuperarinformacindeunatablabasndoseenunacoincidenciaconun valorclave,serecorreelrbolbdelndicehastaqueseencuentraunacoincidenciaclavealniveldehojasdel ndice.Sisenecesitancolumnasdelatablaquenoformabanpartedelndiceserealizaunsaltodelpuntero.Es probablequedichosaltorequieraunaoperacindeE/Snosecuencialeneldisco.Inclusopodrallegara requerirqueseleyeranlosdatosdeotrodiscosilatablaylosrbolesbdelndicequelaacompaansonde grantamao.Sivariospunterosconducenalamismapginadedatosde8KB,ladisminucindelrendimiento deE/Sserinferior,yaquesloesnecesarioleerunavezlapginaenlacachdedatos.Porcadafilaque devueltadeunaconsultaSQLqueimpliquelabsquedaenunndicenoagrupado,serequiereunsaltodel puntero.Estossaltossonlaraznporlaquelosndicesnoagrupadossonmsapropiadosparalasconsultas SQLquedevuelvensolamenteunaopocasfilasdelatabla.Lasconsultasquerequierenquesedevuelvan muchasfilasseatiendenmejorconunndiceagrupado. Paraobtenermsinformacin,busquelacadena"ndicenoagrupado"enlosLibrosenpantalladeSQL Server.

Indicesdecobertura
Unasituacinespecialdelosndicesnoagrupadoseselndicedecobertura.Ladefinicindeunndicede coberturaesunndicenoagrupadoquesecreasobretodaslascolumnasnecesariasparasatisfaceruna consultaSQL,tantoenloscriteriosdeseleccincomoenelpredicadoWHERE.Losndicesdecobertura puedenahorrarunagrancantidaddeE/Sy,porconsiguiente,otorgarungranrendimientoalasconsultas.Sin embargo,esnecesarioequilibrarelcostoquesuponecrearunndice(conelmantenimientodesuestructurade ndicesderbolbasociada)contralagananciaenelrendimientodeE/Squeproporcionaelndicede cobertura.Siunndicedecoberturavaabeneficiarconsiderablementeaunaconsultaoaunconjuntode consultasquesevanaejecutarconmuchafrecuenciaenSQLServer,sucreacinmerecelapena. Ejemplodendicedecobertura 1. Selectcol1,col3fromtabla1wherecol2='valor'. 2. CreateindexnombreIndice1ontabla1(col2,col1,col3). Obien UtiliceelAsistenteparacreacindendicesdelAdministradorcorporativodeSQLServerparacrearel

UtiliceelAsistenteparacreacindendicesdelAdministradorcorporativodeSQLServerparacrearel ndice.SeleccioneHerramientas/AsistentesenlabarrademensdelAdministradorcorporativode SQL,hagaclicenelicono+situadojuntoaBasededatosparamostrarlosasistentesdebasesde datosy,acontinuacin,hagadobleclicenAsistenteparacreacindendicesafindeiniciarlo. Elndicecreado,llamado"nombreIndice1"enesteejemplo,esunndicedecobertura,yaqueincluyetodaslas columnasdelainstruccinSELECTydelpredicadoWHERE,loquesignificaquedurantelaejecucindeesta consulta,SQLServernonecesitateneraccesoalaspginasdedatosasociadascontabla1.SQLServer puedeobtenertodalainformacinnecesariaparasatisfacerlaconsultautilizandoelndicellamado nombreIndice1.UnavezqueSQLServerharecorridoelrbolbasociadoconnombreIndice1yhaencontrado elintervalodeclavesdelndiceenlasquecol2equivalea"valor",SQLServersabequepuedeobtenertodos losdatosnecesarios(col1,col2,col3)enelniveldehojas(nivelinferior)delndicedecobertura.Elloproporciona rendimientodeE/Sdedosformas: SQLServerobtienetodoslosdatosnecesariosdeunapginadelndice,nodeunapginadedatos,por loquelosdatosestnmscomprimidosySQLServerahorraoperacionesdeE/Sdedisco. Elndicedecoberturahaorganizadofsicamenteeneldiscotodoslosdatosnecesariosporcol2,loque permitequelosdiscosdurosdevuelvantodaslasfilasdendiceasociadasconelpredicadoWHERE (col2="valor")enunordensecuencial,hechoqueproporcionaunmejorrendimientodeE/S.Enesencia, unndicedecobertura,desdeunpuntodevistadeE/Sdedisco,seconvierteenunndiceagrupadoen estaconsultayencualquierotraconsultaalaquepuedansatisfacerlascolumnasdelndicedecobertura. Engeneral,sielndicedecoberturaespequeoencuantoalnmerodebytesdetodaslascolumnasdel ndice,comparadoconelnmerodebytesdeunasolafiladedichatabla,yesseguroquelaconsultaque aprovechaelndicedecoberturaseejecutarfrecuentemente,puedeserrazonableutilizarunndicede cobertura.Peroantesdecrearmuchosndicesdecobertura,consultelaseccinsiguiente,enlaquese describelaformaenqueSQLServer7.0puedecreardeformainteligenteyautomticandicesdecobertura paraconsultassobrelamarcha.

ndicesoconsultasdecoberturaautomticas
ElnuevoprocesadordeconsultasdeSQLServer7.0proporcionainterseccindendices.Lainterseccinde ndicespermitealosprocesadoresdeconsultastenerencuentavariosndicesdeunatabladeterminada,crear unatablahashbasadaendichosndicesmltiplesyutilizarlatablahashparareducirlaE/Sdeunaconsulta determinada.Latablahashresultantedelainterseccindendicessehaconvertido,enesencia,enunndice decoberturayproporcionalasmismasventajasencuantoarendimientodeE/Squelosndicesdecobertura. Lainterseccindendicesproporcionaunamayorflexibilidadenlosentornosdebasesdedatosdeusuarios enlosqueesdifcildeterminarpreviamentetodaslasconsultasqueseejecutarnsobrelabasededatos.Una buenaestrategiaquesepuedeseguirenestecasoseraladedefinirndicesnoagrupadosdeunasola columnaentodaslascolumnasenlasqueserealizarnconsultasfrecuentesydejarquelainterseccinde ndicesgestionelassituacionesenlasquesenecesiteunndicedecobertura. Paraobtenermsinformacin,busquelascadenas"recomendacionesparaoptimizarconsultas"y"disearun ndice"enlosLibrosenpantalladeSQLServer. stossonalgunosejemplosqueaprovechanlainterseccindendices 1. Selectcol3fromtabla1wherecol2='valor'. 2. CreateindexnombreIndice1ontabla1(col2) CreateindexnombreIndice2ontabla1(col3) Obien UtiliceelAsistenteparacreacindendicesdelAdministradorcorporativodeSQLServerparacrearlos ndices.SeleccioneHerramientas/AsistentesenlabarrademensdelAdministradorcorporativode SQL,hagaclicenelicono+situadojuntoaBasededatosparamostrarlosasistentesdebasesde

SQL,hagaclicenelicono+situadojuntoaBasededatosparamostrarlosasistentesdebasesde datosy,acontinuacin,hagadobleclicenAsistenteparacreacindendicesafindeiniciarlo. Enelejemploanterior,"nombrendice1"y"nombrendice2"sonndicesnoagrupadosdeunasolacolumnaque sehancreadoenlatabladeSQLServerllamada"tabla1".Cuandoseejecutalaconsulta,elprocesadorde consultasreconoceunasituacinenlaquelainterseccindendicesqueutilizalosdosndicesserapositiva. Eloptimizadordeconsultasaplicarautomticamenteelalgoritmohashalosdosndicesconjuntamentepara ahorrarE/Salahoradeejecutarlaconsulta.Paraqueestoocurrieranosenecesitaronsugerencias.Las consultasquegestionanlosndicesdecobertura(yaseamediantendicesdecoberturadeclaradosomediante lainterseccindendices)recibenelnombrede"consultasdecobertura".

Seleccindendices
LaformaenqueseeligenlosndicesafectaconsiderablementealacantidaddeE/Sdediscoquesegeneray, posteriormente,alrendimiento.Enlasseccionesanterioressedescribaelmotivoporelquelosndicesno agrupadossonbuenospararecuperarunnmerodefilaspequeoylosagrupadosparalasexploracionesde intervalos.Aquencontrarmsinformacin: Intentemantenerlosndicestancompactos(elmenornmerodecolumnasybytes)comoseaposible. Estoocurresobretodoenlosndicesagrupados,yaquelosndicesnoagrupadosutilizarnelndice agrupadocomomtododebsquedadedatos.Paraobtenermsinformacin,busquelascadenas "usarndicesagrupados","Recomendacionesparaoptimizarndices"y"Disearunndice"enlosLibros enpantalladeSQLServer. Enelcasodelosndicesnoagrupados,elcriteriodeseleccinesimportante,yaquesisecreaunndice noagrupadoenunatablagrandeconunospocosvaloresnicossolamente,elusodedichondiceno ahorrarE/Sdurantelarecuperacindedatos.Dehecho,esprobablequelautilizacindelndice provocaramuchamsE/Squeunaexploracinsecuencialdelatabla.Algunosejemplosdebuenos candidatosparaunndicenoagrupadosonlosnmerosdefacturas,losnmerosdeclientesnicos,los nmerosdelaseguridadsocialylosnmerosdetelfono. Losndicesagrupadossonmuchomejoresquelosnoagrupadosparalasconsultasquehacencoincidir columnasoquebuscanintervalosdecolumnasquenotienenmuchosvaloresnicos,yaqueelndice agrupadoordenafsicamentelosdatosdelatabla,loquepermiteunaE/Ssecuencialde64KBenlos valoresclave.Algunosejemplosdeposiblescandidatosparaunndiceagrupadosonlasprovincias,las sucursalesdeempresas,lafechadeventayloscdigospostales.Seraunaprdidadetiempodefinirun ndiceagrupadoenlascolumnasqueslotienenvaloresnicos,amenosquelasconsultastpicasdel sistemaobtengangrandesintervalossecuencialesdevaloresnicos.Lapreguntaclavealintentarelegir lamejorcolumnaencadatablaparacrearelndiceagrupadoenellaes,habrmuchasconsultasque necesitenobtenerungrannmerodefilasbasndoseenelordendeestacolumna?".Larespuestaes muyespecficadelentornodecadausuario.Unaempresapuederealizarmuchasconsultasbasadasen intervalosdefechas,mientrasqueotrapuedebasarseenintervalosdesucursalesbancarias. AlgunosejemplosdepredicadosWHEREquesebeneficiandelosndicesagrupados: WHERE<nombreColumna>>unValor WHERE<nombreColumna>BETWEENunValorANDunValor WHERE<nombreColumna><unValor

Seleccindendicesagrupados,datosclavesecuencialesycmobuscarzonas interactivas
Laseleccindendicesagrupadosimplicalatomadedosdecisionesimportantes.Enprimerlugar,hayque decidirqucolumnadelatablasevaabeneficiardelndiceagrupadoentrminosdeproporcionanE/S secuencialalasexploracionesdedatos.Ensegundolugar,utilizarelndiceagrupadoparaafectarala

colocacinfsicadelosdatosdelatablaalmismotiempoqueseevitanlaszonasinteractivas.Laszonas interactivasseproducencuandosecolocandatosenlosdiscosduros,detalformaquemuchasconsultas intentanleeroescribirdatosenlamismareadelosdiscosalavez.Estaoperacincreauncuellodebotella deE/Sdedisco,yaquedichodiscodurorecibemssolicitudesdeE/Sdediscoconcurrentesdelasque puedegestionar.Lassolucionesson:dejardeobtenertantosdatosdeestediscoorepartirlosdatosenvarios discosparaadmitirlademandadeE/S.Estetipodeconsideracinacercadelacolocacinfsicadelosdatos puedesercrticaparaunaccesoconcurrentealosdatoscorrectoentrecientosomilesdeusuariosdeSQL Server. Estasdosdecisionessuelenentrarenconflictoentresylamejordecisingeneraldeberaequilibrarambas. Enentornoscongrancargadeusuarios,unamejorconcurrencia(paraloquehayqueevitarlaszonas interactivas)suelesermsvaliosaquelaventaja,encuantoarendimiento,quesuponecolocarelndice agrupadoendichacolumna. EnlasanterioresversionesdeSQLServer,enlastablasenlasquenosehayainsertadoningnndice agrupado(alastablascomostasselasdenominamontones),lasfilassiempresecolocaraneneldiscoal finalfsicodelatabla,loquecrearalaposibilidaddeunazonainteractivaalfinaldeunatablamuyactiva.Los nuevosalgoritmosdealmacenamientodeSQLServer7.0proporcionangestindelespaciolibre,loque eliminaestecomportamiento.Ahora,cuandoseinsertanfilasenlosmontones,SQLServerhaceusodelas pginasPFSparaencontrarrpidamenteelespaciolibredisponibleencualquierlugardelatablaenelquese puedeinsertarlafila.LaspginasPFSindicanelespaciolibrequehayenlatabla.Estorecuperaelespacio eliminadoyevitalainsercindezonasinteractivas,yaquelasinsercionesserepartirnporelespaciofsico deldiscoalolargodelatabla.Laadministracindelespaciolibreafectaalaseleccindendicesagrupados. Dadoquelosndicesagrupadosafectanalacolocacindelosdatosfsicos,puedenaparecerzonas interactivascuandounndiceagrupadocreasecuenciasfsicasbasndoseenunacolumnaenlaquese producenmuchasinsercionesconcurrentesenelvalormayordelacolumna,queseencontrarenlamisma ubicacinfsicadeldisco.Enlascolumnasenlasquelosvaloresaumentendeformauniforme,fjeseenla formaenqueunndiceagrupadodedichacolumnaordenarsecuencialmentelasfilasdedatosdeldiscopor dichacolumnayrecuerdequesisecolocaelndiceagrupadoenotracolumnaosinoseincluyeunndice agrupadoenlatabla,estacolocacindelosdatossecuencialescambiaraotracolumnaonotendrlugar. steesunejemplocomnqueayudaailustrarlaseleccindendicesagrupados.Imaginequeunatabla contieneunacolumnaconlasfechasdelasfacturas,unacolumnaconnmerosdefacturanicosyotrosdatos. Imaginequeseinsertanalrededorde10.000registrosnuevosaldayquelasconsultasSQLamenudo necesitanbuscarenestatablatodoslosregistrosdelosdatoscorrespondientesaunasemanayquemuchos usuariosnecesitanteneraccesoaestatablaalmismotiempo.Elnmerodefacturanoseraunbuencandidato paraelndiceagrupadoporvariasrazones.Enprimerlugar,elnmerodefacturaesnicoylosusuariosno necesitanbuscarenconjuntosdenmerosdefacturas,porloquecolocarlosnmerosdefacturafsicamente enordensecuencialeneldiscoesprobablequenoseatil,yaquenoesprobablequeseproduzcan exploracionesdeintervalosenlosnmerosdefacturas.Ensegundolugar,esprobablequelosvaloresdel nmerodefacturaaumentenautomticamente(1001,1002,1003,etc.).Sielndiceagrupadosecolocaenel nmerodelafactura,lasinsercionesdefilasnuevasenestatablaseproducirnalfinaldelatabla(alladodel nmerodefacturamsalto)y,porlotanto,enlamismaubicacinfsicadeldisco,creandounazonainteractiva. Acontinuacin,pienseenlacolumnadefechasdefacturas.ParamaximizarlaE/Ssecuencial,lafechadela facturaseraunabuenacandidataparaunndiceagrupado,yaqueamenudolosusuariosbuscanlosdatos quemerezcanlapenadeunasemana(alrededorde70.000filas).Perodesdelaperspectivadela concurrencia,esposiblequelafechadelafacturanoseaunabuenacandidataparaelndiceagrupado.Siel ndiceagrupadosecolocaenlafechadeunafactura,todoslosdatostendernainsertarsealfinaldelatabla, dadalanaturalezadelosdatosysepuedeproducirunazonainteractivaeneldiscoduroquecontieneelfinal delatabla.Tengaencuentaqueelhechodequelasinsercionesseprodujeranalfinaldelatablaesdealguna formadesplazadoporelhechodequeseinserten10.000filasparalamismafecha,porloqueseramucho menosprobablequelafechadefacturacrearaunazonainteractivaqueelnmerodelafactura.Adems,una controladorahardwaredeRAIDayudaraarepartirlas10.000filasenvariosdiscos,loquetambinayudaraa minimizarlaposibilidaddeinsertarunazonainteractiva.

Nohayningunarespuestaperfectaparaelejemploanterior.Puedesernecesariodecidirquemerecelapena arriesgarseacrearzonasinteractivasyelegircolocarelndiceagrupadoenlafechadelafacturaparaagilizar lasconsultasqueimplicanintervalosdefechasdefacturas.Sisteeselcaso,superviseconsumocuidadola coladelosdiscosasociadosaestatablaytengaencuentaquelasinsercionespuedenponerseencolaunas detrsdeotrasalintentarllegaralfinaldelatabla.Enesteescenario,esposiblequelomsapropiadosea definirelndiceagrupadoenlafechadelafactura,acausadelaventajaquesuponenlasexploracionesde intervalosbasadosenlafechadelafacturayconelfindequelosnmerosdelasfacturasnoseanfsicamente secuencialeseneldisco. Analicemosotroejemploconelqueesmsagradabletrabajar.Imaginequeunatablaconstadenmerode factura,fechadefactura,cantidaddelafactura,oficinadeventasenlaquesehaoriginadolaventayotros datos.Imaginequeseinsertanadiario10.000registrosenestatabla.Enestecaso,lamayoradelasveces losusuariosrealizanconsultasdelascantidadesdelasfacturasbasndoseenlaoficinadeventas.Por consiguiente,lacolumnadelasoficinasdeventasdeberaserlacolumnaenlaquesecreaelndiceagrupado, yaqueseeselrangoenelquesebasanlasexploraciones.Dadoqueesprobablequelasfilasquesevana insertartenganunamezcladedistintasoficinasdeventas,lasinsercionesdebenrepartirseuniformementepor todalatablayporlosdiscosenlosqueseencuentraubicadalatabla. Enalgunoscasos,esposiblequelasexploracionesdeintervalosnoseanlacuestinprincipal.Imagineque unagrantabladetrabajadorestieneelnmerodetrabajador,elnmerodeseguridadsocialyotrosdatos.A medidaqueseinsertanfilas,aumentaelnmerodeempleados.Supongamosqueadiariohay100.000 recuperacionesdeestatablayquecadarecuperacinesunasolabsquedaderegistrosbasadaenelnmero delaseguridadsocial.Sisecrearaunndicenoagrupadoenelnmerodelaseguridadsocial,elrendimiento delasconsultasseraexcelente.Sisecrearaunndiceagrupadoenelnmerodelaseguridadsocialel rendimientodelasconsultasseraalgomejorqueeldelndicenoagrupado,peropuedeserunpocoexcesivo, yaquenoestimplicadaningunaexploracinderangos.Enestecaso,lapreguntaserasiesnecesario molestarseendefinirunndiceagrupadoenestatabla.EnlasanterioresversionesdeSQLServer,era importantedefinirsiempreunndiceagrupadoenunatablaancuandonofueranecesarioparalasconsultas, yaqueayudabaenlarecuperacindelespaciodelasfilaseliminadas.Conlosalgoritmosdeasignacinde espacioylasestructurasdealmacenamientodeSQLServer7.0estoyanoesunproblema.Enesteejemplo, larecomendacinseracrearelndiceagrupadoenelnmerodelaseguridadsocial.Laraznporlaquees convenienteencontrarenlatablaunacolumnaconlosdatosdistribuidosdeunmodoquenosigueelpatrn secuencialdenmerodeempleadoynmerodeseguridadsocialesquetiendeatenerunadistribucin bastanteuniforme.Sisecreaunndiceagrupadoenestacolumnauniformementedistribuida,losregistrosde lostrabajadoressedistribuirnuniformementeeneldisco.Estadistribucin,juntoconFILLFACTORy PAD_INDEX,queseexplicarenlasiguienteseccin,proporcionarreasabiertasenlapginadedatosen todalatablaparainsertardatos.Suponiendoquelosregistrosdetrabajadoresrecininsertadostendrnuna distribucinuniformedelosnmerosdelaseguridadsocial,latabladeempleadossellenaruniformementey seevitarladivisindepginas.Sienlatablanoexistaunacolumnaconunadistribucinuniforme,esposible quehayamerecidolapenacrearunacolumnadeenterosenlatablayllenarlaconvaloresqueestn uniformementedistribuidoselndiceagrupadopodracrearseenlacolumna.Lacolumna"derelleno"o "ficticia",conunndiceagrupadodefinidoenella,noseutilizaparalasconsultas,sinoparadistribuirlaE/Sde datosuniformementeatravsdelasunidadesdediscoparamejorarlaconcurrenciadeaccesodelatablayel rendimientoglobaldeE/S.stapuedeserunametodologamuyeficazcontablasSQLgrandesyalasquese tieneaccesoconmuchafrecuencia.Otraposiblesolucindeesteejemploseranocrearningnndice agrupadoenestatabla.Enestecaso,SQLServer7.0administratodoslosaspectosdelaadministracindel espacio.SQLServerencuentraunespaciolibreparainsertarlafila,reutilizaelespaciodelasfilaseliminadasy reorganizaautomticamenteelordenfsicodelaspginasdedatosdeldiscocuandoesnecesario(para permitirmayorescantidadesdeE/Ssecuencial).Lareorganizacindelaspginasdedatosseproduce durantelasoperacionesdeautorreduccindelosarchivosdebasesdedatos.Paraobtenermsinformacin, busque"Administrarelespacioutilizadoporlosobjetos"y"Asignacinyreutilizacindeespacio"enlosLibros enpantalladeSQLServer. Otraformadeverlaszonasinteractivasseencuentradentrodelcontextodelasselecciones.Simuchos usuariosseleccionandatosconvaloresclavequeestnmuycercanos,peronoenlamismafila,granpartede

usuariosseleccionandatosconvaloresclavequeestnmuycercanos,peronoenlamismafila,granpartede laactividaddeE/SdediscotenderadarsedentrodelamismareginfsicadelsubsistemadeE/Sdedisco. EstaactividaddeE/Sdediscopuederepartirsemsuniformementedefiniendoelndiceagrupadodeesta tablaenunacolumnaquerepartirestosvaloresclaveporeldisco.Sitodaslasseleccionesutilizanelmismo valorclavenico,lautilizacindeunndiceagrupadonoayudaraequilibrarlaactividadE/Sdediscodeesta tabla.ElusodeRAID(dehardwareodesoftware)ayudaraamitigaresteproblema,ascomoarepartirlaE/S enmuchosdiscosduros.Eltipodecomportamientoquesedescribeaqupuedeversecomounacontiendaal tenerdelaccesoaldisco.Noesunacontiendadelbloqueo.

ImportanciadeFILLFACTORydePAD_INDEX
SiunabasededatosSQLServervaaexperimentarunagrancantidaddeactividaddeinsercin,es importantedisearcmoproporcionarymantenerunespacioabiertoenelndiceyenlaspginasdedatos paraimpedirladivisindepginas.Ladivisindepginasseproducecuandounapginadelndiceouna pginasdedatosyanopuedecontenernuevasfilasyesnecesarioinsertarunafilaenlapgina,debidoal ordenlgicodelosdatosdefinidosendichapgina.Cuandoestoocurre,SQLServertienequedividirlos datosdelapginacompletaymoveralrededordelamitaddelosdatosaotrapgina,conloqueambas pginastienenunciertoespacioabierto.Estaoperacinconsumealgunosrecursosdelsistemaytiempo. Cuandosecreanlosndices,SQLServercolocalasestructurasdelosrbolesbdelosmismosenpginas fsicamentecontiguas,loquepermitequeunrendimientodeE/Sptimoenlaexploracindelaspginasde ndiceconE/Ssecuencial.Cuandoseproduceunadivisindepginasyesnecesarioinsertarpginasnuevas enlaestructuralgicadelrbolbdelndice,SQLServerdebeasignarpginasdendicede8KBnuevas.Esto ocurreencualquierotrapartedeldiscoduroydividirlanaturalezafsicamentesecuencialdelaspginasde ndice,loqueconviertealasoperacionesdeE/Ssecuencialesennosecuencialesyreduceelrendimientoala mitad.Sihaycantidadesexcesivasdedivisindepginas,elproblemadeberesolversemediantela reconstruccindelndicepararestaurarelordensecuencialfsicodelaspginasdendice.Estemismo comportamientosepuedeproducirenelniveldehojasdelndiceagrupado,porloqueafectaalaspginasde datosdelatabla. EnelMonitorderendimiento,fjeseen"SQLServer:mtodosdeacceso.Divisionesdepginas".Losvalores distintosdecerodeestecontadorindicanqueseestproduciendounadivisindepginasyquesedebe realizarunanlisismsprofundoconDBCCSHOWCONTIG.Paraobtenerdetallesacercadecmoutilizar estecomando,busque"DBCCSHOWCONTIG"enlosLibrosenpantalladeSQLServer. DBCCSHOWCONTIGesuncomandomuytilquesepuedeutilizarpararevelarsisehaproducidouna excesivadivisindepginasenunatabla.DensidadderecorridoeselindicadorclavequeproporcionaDBCC SHOWCONTIG.Esconvenientequeestevalorseacerquealcienporcientantocomoseaposible.Sielvalor estmuypordebajodelcienporcien,reconstruyaelndiceagrupadodelatablaconlaopcin DROP_EXISTINGparadesfragmentarlatabla.LaopcinDROP_EXISTINGdelainstruccinCREATEINDEX permitevolveracrearlosndicesexistentesyproporcionaunmejorrendimientoenlareconstruccindelos ndicesquelaeliminacinylarecreacindelndice.Paraobtenermsinformacin,busquelascadenas "Creacindendices"y"volveragenerarunndice"enlosLibrosenpantalladeSQLServer. LaopcinFILLFACTORdeloscomandosCREATEINDEXyDBCCREINDEXofreceunaformade especificarelporcentajedeespacioabiertoquesedejaenlaspginasdendiceydedatos.Laopcin PAD_INDEXdeCREATEINDEXaplicaloquesehaespecificadoparaFILLFACTORenlaspginasdendice delnivelquenoesdehoja.SinlaopcinPAD_INDEX,FILLFACTORafectaprincipalmentealaspginasde ndicedelniveldehojasdelndiceagrupado.EsaconsejableutilizarlaopcinPAD_INDEXconFILLFACTOR. Paraobtenermsinformacin,busque"divisindepgina"y"rellenarndice"enlosLibrosenpantalladeSQL Server. ElvalorptimoquesedebeespecificarenFILLFACTORdependedelnmerodedatosnuevosquesevana insertardentrodeunintervalodetiempodeunapginadendiceydedatosde8KB.Esimportanteteneren cuentaquelaspginasdendicedeSQLServersuelencontenermuchasmsfilasquepginasdedatos,ya questassolamentecontienenlosdatosdelascolumnasasociadascondichondice,mientrasquelas

questassolamentecontienenlosdatosdelascolumnasasociadascondichondice,mientrasquelas pginasdedatoscontienenlosdatosdetodalafila.Tampocohayqueolvidarlafrecuenciaconlaquehabr unaventanademantenimientoquepermitirlareconstruccindendicesparaevitarladivisindepginas. Realiceelesfuerzodereconstruirlosndicessolamentecuandolamayoradelaspginasdendiceydedatos estnllenasdedatos.Unapartedeloquepermitequeestoocurraeslacorrectaseleccindelndiceagrupado deunatabladeterminada.Sielndiceagrupadodistribuyelosdatosuniformemente,demodoquelas insercionesdelasfilasnuevasenlatablaseproducenentodaslaspginasdedatosasociadasalatabla,las pginasdedatossellenarndemodouniforme.Enconjunto,estehechoproporcionarmstiempoparaque seproduzcaeliniciodeladivisindedatosyseanecesarioreconstruirelndiceagrupado.Laotrapartedela decisineselFILLFACTOR,quedebeseleccionarse,enparte,sobreelnmerodefilasqueseestimaquese vanainsertarenelrangoclavedeunapginade8KBduranteunintervalodetiempodeterminadoyla frecuenciaconlaquelasreconstruccionesdelosndicesprogramadospuedenproducirseenelsistema. staesotrasituacinenlaquehayllegarauncompromisoentredejarmuchoespaciolibreenlaspginasyla divisindepginasparaobtenerelmejorrendimiento.Siseespecificaunporcentajepequeoen FILLFACTOR,dejargrandesespaciosabiertosenlaspginasdendicesydedatos,loqueayudaaevitarla divisindepginas,perotambinanularunapartedelefectoquetieneenelrendimientolacompresindelos datosdeunapgina.SQLServerfuncionamsrpidamentesisecomprimenmsdatosenlaspginasde ndiceydedatos,yaquehabitualmentepuedeobtenermsdatosconmenospginasymenosE/Ssilosdatos estnmscomprimidosenlaspginas.SiseespecificaunvalormuyaltoenFILLFACTOR,puedequedarmuy pocoespacioabiertoenlaspginasysepermitequelaspginassedesbordendemasiadorpidamente,lo queoriginaladivisindepginas. AntesdeutilizarFILLFACTORyPAD_INDEX,recuerdequelaslecturastiendenasuperarennmeroalas escrituras,inclusoenunsistemadeprocesodetransaccionesenlnea(OLTP).LautilizacindeFILLFACTOR ralentizarlaslecturas,yaquerepartelastablasenunreamsamplia(reduccindelacompresindedatos). AntesdeutilizarFILLFACTORyPAD_INDEX,esconvenienteutilizarelMonitorderendimientoparacomparar laslecturasconlasescriturasdeSQLServeryslosedebenutilizarsilasescriturassuponenunafraccin considerabledelaslecturas(msdeun30porciento). Silasescriturassonunafraccinimportantedelaslecturas,elmejormtodoenlossistemasOLTPconmucha actividadesespecificarunvalortanaltoenFILLFACTORcomoseaposible,quevayaadejarunacantidad mnimadeespaciolibreporcadapginade8KB,almismotiempoquesesigueevitandoladivisinde pginasypermitiendoqueelservidorSQLServeralcancelasiguienteventanadetiemposdisponiblepara reconstruirelndice.EstametodologaequilibraelrendimientodeE/S(manteniendolaspginastanllenas comoseaposible)yevitaladivisindepginas(nopermitiendoquesedesbordenlaspginas).Paraellohay querealizarpruebasdereconstruccindendicescondiferentesvaloresenFILLFACTORy,seguidamente,de simulacindelaactividaddecargadelatablaparavalidarunvalorptimodeFILLFACTOR.Unavezquese hadeterminadoelvalorptimodeFILLFACTOR,hayqueautomatizarlareconstruccinprogramadadelndice comotareadeSQLServer.Paraobtenermsinformacinacercadecmoautomatizartareas,busque"crear unatarea"enlosLibrosenpantalladeSQLServer. EnlasituacinenlaquenovaahaberactividaddeescrituraenlabasededatosdeSQLServer,hayque establecerelvalor100porcienenFILLFACTORconelfindequetodaslaspginasdendiceydedatosse llenencompletamenteparaobtenerelmejorrendimientodeE/Sposible.

HerramientasparaajustarelrendimientodeSQL Server
Datosdeejemploycargadetrabajo
ElsiguienteejemploseutilizaparailustrarelusodelasherramientasderendimientodeSQLServer.Enprimer lugarsecrealasiguientetabla:

lugarsecrealasiguientetabla: createtabletablaPrueba(nkey1intidentity,col2char(300)default'abc',ckey1char(1)) Depus,latablasecargacon10.000filasdedatosdeprueba.Losdatosquesevanacargarenlacolumna nkey1secedenaunndicenoagrupado.Losdatosdelacolumnackey1secedenaunndiceagrupadoylos datosdecol2sonsimplementeunrellenoparaaumentaren300byteseltamaodecadafila: declare@counterint set@counter=1 while(@counter<=2000) begin inserttablaPrueba(ckey1)values('a') inserttablaPrueba(ckey1)values('b') inserttablaPrueba(ckey1)values('c') inserttablaPrueba(ckey1)values('d') inserttablaPrueba(ckey1)values('e') set@counter=@counter+1 end Lasdosconsultassiguientescomponenlacargadetrabajodelservidor: selectckey1,col2fromtablaPruebawhereckey1='a' selectnkey1,col2fromtablaPruebawhereckey1=5000

Analizador
ElAnalizadordeSQLServergrabainformacindetalladaacercadelaactividadqueseproduceenelservidor debasesdedatos.SepuedeconfigurarelAnalizadorparaquevigileygrabelaejecucindeconsultasenSQL Serverporpartedeunoomuchosusuariosconunacantidaddeinformacindelrendimientoampliamente configurable.LainformacindelrendimientodisponiblepararealizargrabacionesenelAnalizadorincluyelas estadsticasdeE/S,lasestadsticasdelaCPU,lassolicitudesdebloqueo,lasestadsticasdeTSQLyde RPC,lasexploracionesdelosndicesydelastablas,lasadvertenciasyloserroresquehansurgido,la creacinyeliminacindeobjetosbasededatos,lasconexionesydesconexiones,lasoperacionesde procedimientoalmacenadas,elfuncionamientodelcursor,etc.Paraobtenermsinformacinacercadeloque puedegrabarelAnalizadordeSQL,busquelacadenaAnalizadorenlosLibrosenpantalladeSQLServer. CargarlainformacindelAnalizadorenunarchivo.trcqueseutilizaconelAsistentepara optimizacindendices ElAnalizadoryelAsistenteparaoptimizacindendicescuentanconunacombinacindeherramientasmuy eficacesparaayudaralosadministradoresdebasesdedatosacrearndicesotablascorrectos.Elanalizador grabaelconsumoderecursosporpartedelasconsultasenunarchivo.trc.Estearchivo.trclopuedeleerel Asistenteparaoptimizacindendices,quetendrencuentatantolainformacinde.trccomolastablasdela basededatosy,seguidamente,ofrecerconsejosacercadelosndicesquedebencrearse.ElAsistentepara optimizacindendicescuentaconunaopcinparacrearautomticamentelosndicesadecuadosdelabase

dedatos,programarlacreacinautomticaydiferidadendices,ogenerarunasecuenciadecomandosT SQLquesepuederevisaryejecutarposteriormente. stossonlospasosparaanalizarunacargadeconsultas: ConfigurarelAnalizador 1. InicieelAnalizadordesdeelAdministradorcorporativodeSQLServer,paraloquedebeseleccionar Herramientas/AnalizadordeSQLServerenelmen. 2. PresioneCTRL+NparacrearunanuevatrazadelAnalizador. 3. Escribaunnombreparalatraza. 4. ActivelacasilladeverificacinCapturaraunarchivo: yseleccioneelarchivo.trcalquesevaaenviar lainformacindelAnalizador. 5. HagaclicenAceptar. Ejecutarlacargadetrabajo 1. InicieelAnalizadordeconsultas(desdeelAdministradorcorporativodeSQLServer,seleccionandoenel menHerramientas/AnalizadordeconsultasdeSQLServer,odesdeelmenInicio,seleccionando Inicio\Programas\MicrosoftSQLServer7.0\Analizadordeconsultas). 2. ConcteseaSQLServerydefinaquelabasededatosactualestdondesecrelatabla. 3. EscribaocopieypeguelassiguientesconsultasenlaventanadeconsultasdelAnalizadordeconsultas: selectckey1,col2fromtablaPruebawhereckey1='a' selectnkey1,col2fromtablaPruebawhereckey1=5000 4. PresioneCTRL+Eparaejecutarambasconsultas. DeteneralAnalizador HagaclicenelcuadradorojoparadetenerlatrazadelAnalizador. Cargarelarchivo.trcenelAsistenteparaoptimizacindendices 1. InicieelAsistenteparaoptimizacindendicesdesdeelAnalizador,seleccionando Herramientas\Asistenteparaoptimizacindendicesenelmen.HagaclicenSiguiente. 2. Seleccionelabasededatosquesevaaanalizar.HagaclicenSiguiente. 3. DejeelbotndeopcinTengounarchivodecargadetrabajoguardadoactivadoyhagaclicen Siguiente. 4. ActiveelbotndeopcinArchivodecargadetrabajo,busqueelarchivo.trccreadoconelAnalizador y,acontinuacin,hagaclicenSiguiente. 5. EnelcuadrodedilogoSeleccionarlastablasparaoptimizar,seleccionelastablasquesea necesarioanalizary,acontinuacin,hagaclicenSiguiente. 6. ElAsistenteparaoptimizacindendicesindicarquesecreenlosndicescorrectosenelcuadrode dilogoRecomendacionesdendices.HagaclicenSiguiente. 7. Elasistentebrindalaopcindecrearlosndicesinmediatamente,deprogramarlacreacindendices, unatareaautomatizadaparaunmomentoposterior,odecrearunasecuenciadecomandosTSQLcon loscomandosparacrearlosndices.SeleccionelaopcinqueprefierayhagaclicenSiguiente. 8. HagaclicenFinalizar. ElTSQLgeneradoporelAsistenteparaoptimizacindendicesparalabasededatosylacargade trabajodelejemplo /*Creadopor:elAsistenteparaoptimizacindendices*/ /*Fecha:9/7/98*/

/*Fecha:9/7/98*/ /*Hora:6:42:00PM*/ /*Servidor:HENRYLNT2*/ /*Basededatos:prueba*/ /*Archivodecargadetrabajo:E:\mssql7\Binn\profiler_load.sql*/ USE[prueba] BEGINTRANSACTION CREATECLUSTEREDINDEX[tablaPrueba2]ON[dbo].[tablaPrueba]([ckey1]) if(@@error<>0)rollbacktransaction CREATENONCLUSTEREDINDEX[tablaPrueba1]ON[dbo].[tablaPrueba]([nkey1]) if(@@error<>0)rollbacktransaction COMMITTRANSACTION LosndicesquerecomiendaelAsistenteparaoptimizacindendicesparalatablaylosdatosdeejemploson loqueesperbamos.Haysolamentecincovaloresnicosparackey1y2.000filasdecadavalor.Dadoque unasdelasconsultasdeejemplo(selectckey1,col2fromtablaPruebawhereckey1='a')requierela recuperacindelatablabasndoseenunodelosvaloresdeckey1,cobrasentidocrearunndiceagrupadoen lacolumnackey1.Lasegundaconsulta(selectnkey1,col2fromtablaPruebawherenkey1=5000)obtieneuna filabasndoseenelvalordelacolumnankey1.Nkey1esnicoyhay10.000filas,porloquetienesentidocrear unndicenoagrupadoenestacolumna. LacombinacinAnalizadoryAsistenteparaoptimizacindendicesseconvierteenalgomuyeficazen entornosrealesdeservidoresdebasesdedatos,dondehaymuchastablasymuchasconsultasimplicadas. UtiliceelAnalizadorparagrabarunarchivo.trcmientraselservidordebasesdedatosestexperimentandoun conjuntodeconsultasrepresentativo.Acontinuacin,cargueelarchivo.trcenelAsistenteparaoptimizacinde ndicesparadeterminarlosndicesapropiadosquehayquecrear.SigalasindicacionesdelAsistentepara optimizacindendicesconelfindegeneraryprogramarautomticamentequelostrabajosdecreacinde ndicesseejecutenenmomentosdeescasacongestin.EjecuteelAnalizadoroelAsistenteparaoptimizacin dendicesdeformaregular(quizssemanalmente)paraversilasconsultasqueseejecutanenelservidorde basesdedatoshancambiadoconsiderablemente,loqueposiblementerequerirdistintosndices.Eluso regulardelAnalizadorodelAsistenteparaoptimizacindendicesayudaalosadministradoresdebasesde datosamantenerSQLServerfuncionandoaplenorendimientomientrascambianlascargasdetrabajodelas consultasyeltamaodelabasededatosaumentaconeltiempo. Paraobtenermsinformacin,busque"Asistenteparaoptimizacindendices"y"Recomendacionespara optimizarndices"enlosLibrosenpantalladeSQLServer. CargarlainformacindelAnalizadorenunatabladeSQLServerparasuanlisis OtraopcinqueproporcionaelAnalizadoreslaposibilidadderegistrarlainformacinenunatabladeSQL Server.Unavezcompletada,esposiblerealizarconsultasadichatablaparadeterminarsideterminadas consultasutilizanexcesivosrecursos. RegistrarlainformacindelAnalizadorenunatablaSQLServer 1. InicieelAnalizadordesdeelAdministradorcorporativodeSQLServer,paraloquedebeseleccionar Herramientas/AnalizadordeSQLServerenelmen.

Herramientas/AnalizadordeSQLServerenelmen. 2. PresioneCTRL+NparacrearunanuevatrazadelAnalizador. 3. Escribaunnombreparalatraza. 4. ActivelacasilladeverificacinCapturaraunatabla: yseleccionelatabladeSQLServeralaqueseva aenviarlainformacindelAnalizador. 5. HagaclicenAceptar. 6. Cuandohayafinalizado,detengalatrazadelAnalizadorhaciendoclicenelcuadradorojo. AnalizarlainformacingrabadaenelAnalizadorconelAnalizadordeconsultas UnavezquelainformacinsegrabaenlatabladeSQLServer,sepuedeutilizarelAnalizadordeconsultas paraaveriguarquconsultasdelsistemaconsumenmsrecursos.Deestaforma,losadministradoresde basesdedatospuedenconcentrarsutiempoenmejorarlasconsultasquenecesitanmsayuda.Porejemplo, laconsultasiguienteseralatpicadeltipodeanlisisqueserealizaenlosdatosdelAnalizadorgrabadosen unatabladeSQLServer.LaconsultarecuperalostresmximosconsumidoresdelosrecursosdelaCPUenel servidordebasesdedatos.TambinsedevuelvelainformacindeE/Sdelecturayescritura,juntoconla duracindelasconsultasenmilisegundos.SielAnalizadorgrabaunagrancantidaddeinformacin,es convenientecrearndicesenlatablaparaagilizarlasconsultasdeanlisis.Porejemplo,silaCPUvaaserun criterioimportanteparaanalizarestatabla,seraconvenientecrearunndicenoagrupadoenlacolumnade CPU: selecttop3TextData,CPU,Reads,Writes,Durationfromprofiler_out_tableorderbycpudesc Paraobtenermsinformacin,busquelascadenas"Veryanalizartrazas","Solucionarproblemasdel AnalizadordeSQLServer","SugerenciasparautilizarSQLServer","EscenarioshabitualesdelAnalizadorde SQLServer","IniciarelAnalizadordeSQLServer"y"SupervisarconelAnalizadordeSQLServer"enlos LibrosenpantalladeSQLServer.

Analizadordeconsultas
EstadsticasdeE/S AlAnalizadordeconsultascuentaconlaopcinEstadsticasdeE/SenlafichaGeneraldelcuadrode dilogoOpcionesdeconexin.Activeestacasilladeverificacinparaobtenerinformacinacercadela cantidaddeE/SqueconsumelaconsultaqueseacabadeejecutarenelAnalizadordeconsultas. Porejemplo,siseseleccionalaopcinEstadsticasdeE/S,laconsulta"selectckey1,col2fromtablaPrueba whereckey1='a'"devuelvelasiguienteinformacindeE/Sademsdelconjuntoderesultados: Table'tablaPrueba.Scancount1,logicalreads400,physicalreads382,readaheadreads400. Deigualforma,siseseleccionalaopcinEstadsticasdeE/S,laconsulta"selectnkey1,col2from tablaPruebawherenkey1=5000'"devuelvelasiguienteinformacindeE/Sademsdelconjuntode resultados: Table'tablaPrueba'.Scancount1,logicalreads400,physicalreads282,readaheadreads400. LautilizacindelasestadsticasdeE/Sesunabuenaformadesupervisarelefectodelajustedeconsultas. Porejemplo,creelosdosndicesenestatabladeejemplo,comorecomendabaanteriormenteelAsistente paraoptimizacindendices,ydespusvuelvaaejecutarlasconsultas. Enelcasodelaconsulta"selectckey1,col2fromtablaPruebawhereckey1='a'",elndiceagrupadoha mejoradoelrendimiento,comoseindicaracontinuacin.Dadoquelaconsultanecesitaobtenerun20por cientodelatabla,lamejoradelrendimientoparecerazonable: Table'tablaPrueba'.Scancount1,logicalreads91,physicalreads5,readaheadreads32.

Table'tablaPrueba'.Scancount1,logicalreads91,physicalreads5,readaheadreads32. Enelcasodelaconsulta"selectnkey1,col2fromtablaPruebawherenkey1=5000",lacreacindelndiceno agrupadotenaunefectomuyimportanteenelrendimientodelaconsulta.Dadoqueparaestaconsulta solamentehayquerecuperarunafiladelatablacon10.000filas,parecerazonablelamejoradelrendimiento conelndicenoagrupado: Table'tablaPrueba'.Scancount1,logicalreads5,physicalreads0,readaheadreads0. Plandepresentacin ElPlandepresentacinsepuedeutilizarparacentrarlaatencinenlasconsultasproblemticasdeSQL,sise muestralainformacindetalladaacercadeloquehaceeloptimizadordeconsultas.SQLServer7.0 proporcionaversionesdetextoygrficasdelPlandepresentacin.ElresultadodelPlandepresentacin grficosepuedemostrarenelpanelResultadosdelAnalizadordeconsultasejecutandounaconsultaSQLcon CTRL+L.Losiconosindicanalasoperacionesqueeloptimizadordeconsultassehabraejecutadosihubiera ejecutadolaconsulta.Lasflechasindicanladireccindelflujodedatosdelaconsulta.Losdetallesdecada unadelasoperacionessepuedenmostrarmanteniendoelpunterodelmouse(ratn)sobreeliconodela operacin.LainformacinequivalentesepuedemostrarenelPlandepresentacinenmodotextoejecutando elcomando"setshowplan_allon".ParaobtenerunmenornmeroderesultadosdelPlandepresentacinen modotextoquemuestrelasoperacionesdeloptimizadordeconsultas,peroquenomuestrelosdetallesdelas operaciones,ejecuteelcomando"setshowplan_texton." Paraobtenermsinformacin,busquelascadenas"Plandepresentacingrfico","UtilizarelPlande presentacinparasupervisarunaconsultadebasededatos","tablasdetrabajo"y"Comprenderlas combinacionesdebuclesanidados"enlosLibrosenpantalladeSQLServer. EjemplosderesultadosdelPlandepresentacin Usodelasconsultasdeejemplodefinidasanteriormentey"setshowplan_texton"ejecutadoenelAnalizador deconsultas: Consulta: selectckey1,col2fromtablaPruebawhereckey1='a' ResultadosdelPlandepresentacinbasadoentexto: |ClusteredIndexSeek(OBJECT:([test].[dbo].[tablaPrueba].[tablaPrueba2]),SEEK:([tablaPrueba]. [ckey1]='a')ORDERED) Latablaanterioraprovechaelndiceagrupadodelacolumnackey1,comoindica"ClusteredIndexSeek". ResultadosdelPlandepresentacingrficoequivalente:

Figura3ResultadosdelPlandepresentacingrficoparaquelaconsultaaprovecheunndice agrupado Siseeliminaelndiceagrupadodelatabla,laconsultanecesitautilizarunaexploracindetabla.Los resultadossiguientesdelPlandepresentacinindicanelcambiodecomportamiento. ResultadosdelPlandepresentacinbasadoentexto: |TableScan(OBJECT:([test].[dbo].[tablaPrueba]),WHERE:([tablaPrueba].[ckey1]='a')) ResultadosdelPlandepresentacingrficoequivalente:

Figura4ResultadosdelPlandepresentacingrficoparaquelaconsultaejecutelaexploracinde unatabla Tengaencuentaquenohayquepreocuparsedelasexploracionesdetablasenlastablaspequeas.Las exploracionesdetablassonlaformamseficazderecuperarinformacindelastablaspequeas.Sin embargo,enlastablasgrandes,lasexploracionesdetablasqueindicaelPlandepresentacinsonuna advertenciadequelatablapuedenecesitarmejoresndicesodequelosndicesexistentesdebentenersus estadsticasactualizadas(loquepuedehacerseconelcomandoUPDATESTATISTICS).SQLServer7.0 proporcionandicesdeactualizacinautomtica.EsconvenientequeSQLServerpermitamantener automticamentelasestadsticasdelosndices,yaqueayudaagarantizarquelasconsultassiempretienen buenasestadsticasdendicesconlasquetrabajar. Consulta: seleccionenkey1,entablaPrueba,dondeckey1=5000 ResultadosdelPlandepresentacinbasadoentexto: |BookmarkLookup(BOOKMARK:([Bmk1000]),OBJECT:([test].[dbo].[tablaPrueba])) |IndexSeek(OBJECT:([test].[dbo].[tablaPrueba].[tablaPrueba1]),SEEK:([tablaPrueba].[nkey1]=5000) ORDERED) ResultadosdelPlandepresentacingrficoequivalente:

Figura5ResultadosdelPlandepresentacingrficoparaquelaconsultaaprovecheunndiceno agrupado,parte1

Figura6ResultadosdelPlandepresentacingrficoparaquelaconsultaaprovecheunndiceno agrupado,parte2 Laconsultaanteriorutilizaelndicenoagrupadodelacolumnankey1,loqueindicalaoperacin"IndexSeek" delacolumnankey1.Laoperacin"BookmarkLookup"indicaqueSQLServernecesitabaejecutarunsaltodel punterodesdelapginadendicealapginadedatosdelatablapararecuperarlosdatossolicitados.Elsalto delpunteroeranecesario,yaquelaconsultasolicitabalacolumnacol2,quenoformabapartedelndiceno agrupado. Consulta: selectnkey1entablaPrueba,wherenkey1=5000 ResultadosdelPlandepresentacinbasadoentexto: |IndexSeek(OBJECT:([test].[dbo].[tablaPrueba].[tablaPrueba1]),SEEK:([tablaPrueba].[nkey1]=[@1]) ORDERED) ResultadosdelPlandepresentacingrficoequivalente:

Figura7ResultadosdelPlandepresentacingrficoparaunaconsultadecobertura Laconsultaanteriorutilizaelndicenoagrupadoennkey1comondicedecobertura.Tengaencuentaqueno sehanecesitadoningunaoperacin"BookmarkLookup"paraestaconsulta.Ellosedebeaqueelndiceno agrupadoproporcionatodalainformacinnecesariaparalaconsulta(lasclusulasSELECTyWHERE),loque significaquelaspginasdendicesnoagrupadosnonecesitansaltosdelpunteroalaspginasdedatos.La E/Ssereduceencomparacinconelcasoenelqueserequeraunabsquedademarcadores.

Monitorderendimiento
ElMonitorderendimientoproporcionaunagrancantidaddeinformacinacercadeloqueocurreenelservidor debasesdedatosdesdeelpuntodevistadeoperacionesdeWindowsySQLServer.Paraobtener informacinacercadecontadoresespecficosdeSQLServer,busqueenlosLibrosenpantalladeSQLServer lacombinacindecadenas"SQLServer:"y"objeto". EnelmododegrficosdelMonitorderendimiento,tomenotadelosvaloresMxyMn.Nopongademasiado nfasisenelpromedio,yaquelospuntosdedatosmuypolarizadosloeliminan.Estudielaformadelgrficoy compreloconMn/Mxparaobtenerunconocimientoprecisodelcomportamiento.Utilicelatecla <RETROCESO>pararesaltarloscontadoresconunalneablanca. EsposibleutilizarelMonitordelrendimientopararegistrarenunarchivoderegistrotodoslosobjetosy contadoresdesupervisinderendimientodeWindowsNTySQLServerdisponiblesalmismotiempoquese veelMonitorderendimientodeformainteractiva(modogrficos).Elvalordelintervalodemuestreodetermina lavelocidadalaquecreceeltamaodelarchivoderegistro.Eltamaodelosarchivosderegistropuede crecermuyrpidamente(porejemplo,100megabytesenunahoracontodosloscontadoresactivadosyun intervalodemuestreode15segundos).Esdeesperarqueenelservidordepruebahayadosgigabyteslibres paraalmacenarestostiposdearchivos.Perosiesimportanteconservarelespacio,pruebeaejecutarloconun granintervaloderegistroparaqueelMonitorderendimientonoefecteunmuestreodelsistemacontanta frecuencia.Pruebecon3060segundos.Deestaformasevuelveaefectuarunmuestreodetodoslos contadoresconunafrecuenciarazonable,peroeltamaodelarchivoderegistronocrecedesmesuradamente. ElMonitorderendimientotambinconsumeunapequeacantidadderecursosdeCPUydeE/Sdedisco.Si unsistemanotienemuchosrecursosdeE/SdediscoodeCPU,quizsseamejorejecutarelMonitorde rendimientodesdeotramquinaparacontrolarelservidorSQLServeratravsdelared(sloenelmodode grficos,tiendeasermseficazregistrarlainformacindelrendimientolocalmenteenelservidorSQLServer queenviarlaatravsdeunaredderealocaloLAN)oreducirelregistroasolamenteloscontadoresms importantes. Enaconsejableregistrarenunarchivotodosloscontadoresdisponiblesdurantelasejecucionesdelas pruebasderendimientoparasuposterioranlisis.Deesaformaesposibleexaminarconmayordetenimiento cualquiercontadorposteriormente.ConfigureelMonitorderendimientopararegistrartodosloscontadoresen unarchivoderegistroyalmismotiemposupervisarloscontadoresmsinteresantesenunodelosotros modos,comoelmododegrficos.Deestaforma,segrabatodalainformacin,peroloscontadoresms interesantessepresentanenungrficoordenadodelMonitorderendimientomientrasquetienelugarla ejecucindelrendimiento. Iniciarlacaractersticaderegistro 1. AbraelMonitorderendimiento. 2. SeleccioneVer/Registroenelmen. 3. Hagaclicenelbotnconelsmbolo+.

3. Hagaclicenelbotnconelsmbolo+. 4. Unmtodosimplepararegistrartodosloscontadoreseshacerclicenelprimerobjetodelcuadrode dilogoAgregaralregistro. 5. MantengapresionadalateclaMAYSyutilicelateclaAVPGpararesaltartodosloscontadores. 6. HagaclicenAgregar. 7. HagaclicenListo. 8. SeleccioneOpciones/Registrarenelmen. 9. EnelespacioconelnombreNombredearchivo: seleccioneoescribaelnombredelarchivoenelque sevaaregistrarlainformacindelrendimiento. 10. HagaclicenIniciarregistro. Detenerlacaractersticaderegistro 1. SeleccioneOpciones/Registrarenelmen. 2. HagaclicenDetenerregistro. CargarlainformacinregistradaenelMonitorderendimientoparasuanlisis 1. SeleccioneVer/Registroenelmen. 2. SeleccioneOpciones/Datossuyosenelmen. 3. HagaclicenelbotndeopcinArchivoderegistro. 4. Hagaclicenelbotn"Usted"yutilicelaventanadeexploracindearchivosAbrirarchivoderegistro deentradaparabuscaryabrirelarchivoderegistro.Hagadobleclicenelnombredelarchivo. 5. HagaclicenAceptar. 6. Hagaclicenelbotnconelsmbolo+. 7. UtiliceelcuadrodedilogoAgregaralgrficoparaagregarloscontadoresdeseadosalapantalla grfica.Seleccionelacombinacinobjeto/contadorquevaaagregaryhagaclicenAgregar. CmorelacionarloseventosregistradosenelMonitorderendimientoparallegaraunpuntoanterior deltiempo Estacaractersticaesmuytilparaobservarloquehacaelservidordebasesdedatosenunperodode tiempodeterminado: 1. SeleccioneymuestrelosobjetosocontadoresdeseadosenelmododegrficosdelMonitorde rendimiento,utilizandolasinstruccionesanteriores. 2. SeleccionesEdicin/Ventanadetiempoenelmen. 3. DebeaparecerelcuadrodedilogoIntervalodetiempodelarchivoderegistrodeentrada.Sihace clicymantienepulsadoelbotndelmouseenlasbarrasdeslizantesdelaventanadetiempo,sepuede ajustarlaventanadetiempodeinicioydedetencinparaquemuestrelosdatosregistradosenelgrfico delMonitorderendimiento. 4. HagaclicenAceptarpararestablecerelgrficodemodoqueslomuestrelosdatosregistradosdela ventanadetiemposeleccionada. ContadoresclavedelMonitorderendimientoquehayquevigilar Coladediscos(fsicosolgicos)>2 EstaseccinexigelaobservacindevarioscontadoresdediscodelMonitorderendimiento.Para habilitarlos,ejecuteelcomando"diskperfy"enunaventanadecomandosdeWindowsNTyreinicieel sistemaoperativo. LosdiscosdurosfsicosqueestnenunacoladediscosseguirnmanteniendosolicitudesdeE/Sde discomientrasintentanrecuperarelprocesamientodeE/S.Estasunidadesempeoraneltiempode respuestadeSQLServer,loqueaumentaeltiempodeejecucindelasconsultas.

SiseutilizaRAID,paracalcularlacoladediscosporunidadfsicahayquesabercuntosdiscosduros fsicosestnasociadosconcadamatrizdeunidadesqueWindowsNTvecomounasolaunidadfsica. UnexpertoenhardwarepuedeexplicarleelcanalSCSIyladistribucindelasunidadesfsicasconelfin dequesepalaformaenquelasunidadesfsicasalmacenanlosdatosdeSQLServeryelnmerode datosdeSQLServerquesedistribuyenenlosdistintoscanalesSCSI. LacoladediscossepuedeverenelMonitorderendimientodevariasformas.Loscontadoresdediscos lgicosestnasociadosconlasletrasdelasunidadeslgicasasignadasatravsdelAdministradorde discos,mientrasqueloscontadoresdediscosfsicosestnasociadosconloqueelAdministradorde discosvecomounsolodispositivodediscofsico.TengaencuentaqueloqueelAdministradorde discosvecomounsolodispositivofsicopuedeserundiscoduroounamatrizdeRAID,quesecompone devariosdiscosduros.Longitudactualdelacoladediscosesunamedidainstantneadelacolade discos,mientrasqueelpromediodecoladediscoseselpromediodelamedicindelascolasde discosduranteelperododemuestreodelMonitorderendimiento.Tomenotadecualquiercontadorenel queDiscolgico:promediodecoladediscos>2,Discofsico:promediodecoladediscos>2,Disco lgico:longitudactualdelacoladediscos>2,oDiscofsico:promediodecoladediscos>2. Estasmedidasrecomendadasseespecificanpordiscoduro.SiunamatrizdeRAIDestasociadacon lamedidadeunacoladediscos,dichamedidadebedividirseentreelnmerodediscosdurosfsicosde lamatrizdeRAIDparapoderdeterminarlacoladediscospordiscodurofsico. NotaEnlosdiscosdurosfsicosoenlasmatricesdeRAIDquecontienenlosarchivosderegistrode SQLServer,lacoladediscosnoesunamedidatil,yaqueelAdministradorderegistrodeSQLServer noponeencolamsdeunasolasolicituddeE/SenlosarchivosderegistrodeSQLServer. Paraobtenermsinformacin,busquelacadena"supervisarlaactividaddeldisco"enlosLibrosen pantalladeSQLServer. Sistema:longituddecoladelprocesador>2(porCPU) Estosignificaquelosprocesadoresdelservidorestnrecibiendomssolicitudesdetrabajodelasque puedegestionarcomogrupocolectivo.Porlotanto,Windowsnecesitaponerestassolicitudesencola. UnapartedelacoladelprocesadoresrealmenteunindicadordelbuenrendimientoglobaldeE/Sde SQLServer.SinohaycoladeprocesadorysilautilizacindelaCPUesescasa,puedeindicarquehay uncuellodebotelladerendimientoenalgnlugardelsistemaylomsprobableesqueseencuentreen elsubsistemadediscos.Sisetieneunacantidadrazonabledetrabajoenlacoladelprocesadorsignifica quelasCPUnoestninactivasyqueelrestodelsistemasigueelritmodelasCPU. UnareglageneralparaunbuennmerodecoladelprocesadoresmultiplicarelnmerodelasCPUdel servidordebasesdedatospor2. Hayqueinvestigartodasaquellascolasdeprocesadorqueestnmuyporencimadeesteclculo.Una excesivacoladeprocesadorincrementaeltiempodeejecucindeconsultas.Hayvariasactividadesque puedencontribuiralacoladeprocesador.Laeliminacindelapaginacinendiscoyenmemoria ayudaraahorrarrecursosdelaCPU.Otrosmtodosqueayudanareducirlacoladeprocesadorson:el ajustedelasconsultasSQL,laeleccindemejoresndicesSQLparareducirlaE/Sdedisco(y,por consiguiente,CPU)oagregarmsCPU(procesadores)alsistema. Paginacinendisco.Memoria:pginasporsegundo>0oMemoria:lecturasdepginaspor segundo>5 Memoria:pginasporsegundo>0oMemoria:lecturasdepginasporsegundo>5significaque Windowsvaaldiscoaresolverlasreferenciasalamemoria(errordepaginacinendisco).Esto consumerecursosdeE/SdediscoyCPU.Memoria:pginasporsegundoesunbuenindicadordela cantidaddepaginacinqueestrealizandoWindowsydelaadecuacindelaconfiguracindeRAM

cantidaddepaginacinqueestrealizandoWindowsydelaadecuacindelaconfiguracindeRAM actualdelservidordebasesdedatos.Unsubconjuntodeinformacindelapaginacinendiscodel MonitorderendimientoeselnmerodevecesporsegundoqueWindowshatenidoqueleerdelarchivo depaginacinpararesolverlasreferenciasalamemoria,loqueserepresentamedianteMemoria: lecturasdepginasporsegundo.SiMemoria:lecturasdepginasporsegundo>5,esmaloparael rendimiento. ElajusteautomticodelamemoriadeSQLServerhartodoloposibleporajustardinmicamentela utilizacindelamemoriadeSQLServer,demodoqueseevitedichapaginacin.Unapequeacantidad depginasporsegundoesnormal,perounapaginacinexcesivarequiereunaaccincorrectiva. SiSQLServerajustaautomticamentelamemoria,elagregarmsRAMoeliminarotrasaplicaciones delservidordebasesdedatossonposiblesopcionesqueayudanaqueMemoria:pginasporsegundo tengaunnivelrazonable. SilamemoriadeSQLServerseconfiguramanualmenteenelservidordebasesdedatos,puedeser necesarioreducirlamemoriaqueseasignaaSQLServer,eliminarotrasaplicacionesdelservidorde basesdedatosoagregarmsRAMalservidordebasesdedatos. ElmantenimientodeMemoria:pginasporsegundoencerooenunacifracercanaaceromejorael rendimientodelservidordebasesdedatos,loquesignificaqueWindowsytodassusaplicaciones(entre lasqueseincluyeSQLServer)novanalarchivodepaginacinparasatisfacersolicitudesdedatosen memoria,porloquecantidaddeRAMdelservidoressuficiente.Sielnmerodepginasporsegundoes ligeramentesuperioracero,estbien,perorecuerdequesepagaunapenalizacinrelativamentealtaen trminosderendimiento(E/Sdedisco)cadavezqueserecuperandatosdelarchivodepaginacin frentealaRAM. Merecelapenainvertirunmomentoencomprenderladiferenciaentre"Memoria:entradadepginaspor segundo"y"Memoria:lecturasdepginasporsegundo"."Memoria:entradadepginasporsegundo" indicaelnmerorealdepginasde4KBdeWindowsextradodeldiscoparasatisfacerloserroresde pgina.Memoria:lecturasdepginasporsegundo"indicalacantidaddesolicitudesdeE/Sdedisco queserealizanporsegundoparasatisfacerloserroresdepgina,loqueproporcionaunpuntodevista ligeramentedistintodeloserroresqueseproducen.Porlotanto,unasolalecturadepginapodra contenervariaspginasde4KBdeWindows.LaE/Sdediscofuncionamejorcuandoaumentael tamaodelospaquetesdedatos(64KBoms),porloquepuedemerecerlapenatenerencuenta amboscontadoresalmismotiempo.Tambinesimportanterecordarqueenundiscoduro,larealizacin deunasolalecturaoescriturade4KBescasitancaroencuantoatiempoinvertidocomounasola lecturaoescriturade64KB.Considerelasituacinsiguiente:laslecturasde200pginasqueconsten deochopginasde4KBporlecturapodranacabarantesquelaslecturasde300pginasqueconsten deunasolapginade4KB.Tengaencuentaqueestamoscomparando1.600lecturasdepginasde4 KBqueterminanantesque300lecturasdepginasde4KB.Estefactorclavesepuedeaplicaratodos losanlisisdeE/Sdedisco:nosefijesimplementeenelnmerodebytesdediscoporsegundo,tenga encuentatambinlastransferenciasdediscoporsegundo,yaqueambosfactoressonimportantes.Esto seexplicarconmayorprofundidad,msadelante,enlasseccionesdeE/Sdedisco. Estilcomparar"Memoria:entradadepginasporsegundo"con"Discolgico:lecturasdeldiscopor segundo"entodaslasunidadesasociadasconelarchivodepaginacindeWindowsNTy"Memoria: salidadepginasporsegundo"con"Discolgico:escrituraseneldiscoporsegundo"entodaslas unidadesasociadasconelarchivodepaginacindeWindowsNT,yaqueproporcionanindicanla cantidaddeE/Sdediscoestestrictamenterelacionadaconlapaginacinfrenteaotrasaplicaciones (esdecir,SQLServer).OtraformasencilladeaislarlaactividaddeE/Sdelarchivodepaginacines asegurarsedequeelarchivodepaginacinseencuentraenunconjuntodeunidadesseparadodelos restantesarchivosdeSQLServer.LaseparacindelarchivodepaginacindelosarchivosdeSQL ServertambinpuedemejorarelrendimientodeE/Sdedisco,yaquepermitequelaE/Sdedisco asociadaconlapaginacinseejecuteenparaleloconlaE/SdediscoasociadaconSQLServer.

Paginacinenmemoria:Memoria:erroresdepginasporsegundo>0 Memoria:erroresdepginasporsegundo>0indicaqueWindowsNTestpaginando,peroincluyela paginacinendiscoylapaginacinenmemoriaenelcontador.Enlaseccinanteriorsehaexplicadola paginacinendisco.Lapaginacinenmemoriasignificaquehayaplicacionesenelservidordebases dedatosquesolicitanpginasdememoriaqueanestndentrodelaRAMperofueradelconjuntode trabajodeWindows.Memoria:erroresdepginasporsegundoestilparaderivarlacantidadde paginacinenmemoriaqueseestproduciendo.Nohayuncontadordenominadoerroresdepaginacin enmemoriaporsegundo,sinoqueelnmerodeerroresdepaginacinenmemoriaqueseproduzcan porsegundosecalculanatravsdelclculo: "Memoria:erroresdepginasporsegundo"."Memoria:entradadepginasporsegundo"=Errorde paginacinenmemoriaporsegundo ParadeterminarsiesSQLServer,enlugardeotroproceso,elqueestcausandounapaginacin excesiva,superviseelcontadorProceso:erroresdepginasporsegundodelprocesodeSQLServery fjesesielnmerodeerroresdepginasporsegundodesqlserver.exeessimilaralnmerodeMemoria: pginasporsegundo. Generalmente,loserroresdepaginacinenmemorianosontanperjudicialesparaelrendimientocomo loserroresdepaginacinendisco,yaqueconsumenrecursosdeCPU.Loserroresdepaginacinen discoconsumenrecursosdeE/S.Elmejorentornoparaelrendimientoesnotenerningnerror. TengaencuentaquehastaqueSQLServerrealmentetieneaccesoporprimeravezatodassuspginas decachdedatos,elprimeraccesoacadapginaprovocarunerrordepaginacinenmemoria.Porlo tanto,nosepreocupeporloserroresdepaginacinenmemoriainicialesqueocurranlaprimeravezque seinicieSQLServerylaprimeravezqueseutilicelacachdedatos. Paraobtenermsinformacinacercadecmoajustarlamemoria,busquelacadena"supervisareluso delamemoria"enlosLibrosenpantalladeSQLServer. Supervisarlosprocesadores Mantengaocupadostodoslosprocesadoresdelservidorparamaximizarelrendimiento,peronotanocupados queseproduzcancuellosdebotelladeprocesador.Elretodelajustedelrendimientoesquesielcuellode botellanoestenlaCPU,estarenalgnotrolugar(unodeloscandidatosmsfirmeseselsubsistemade discos),porloquesemalgastalaCPUlaCPUsueleserelrecursoqueesmsdifcildeampliar(porencima denivelesespecficosdeconfiguracin,comocuatrouochoenmuchossistemasactuales),porloquedebe versecomounabuenasealdequelautilizacindelaCPUsuperael95porciento.Almismotiempo,hayque supervisareltiempoderespuestadelastransaccionesparaasegurarsedequeseencuentradentrodeuna lmitesrazonablessinoloest,>95porcientodelusodeCPUpuedesignificarsimplementequelacargade trabajoesexcesivaparalosrecursosdelaCPUdisponibles,habrqueaumentarlaCPUoquereduciro ajustarlacargadetrabajo. MireelcontadordelMonitordelrendimiento"Procesador:tiempodeprocesador%"paraasegurarsedeque todoslosprocesadoresseencuentranconstantementepordebajodel95porcientodeutilizacinentodaslas CPU."Sistema:coladeprocesador"eslacoladeprocesadordetodaslasCPUdeunsistemaWindowsNT. Si"Sistema:coladeprocesador"essuperioradosporCPU,indicaquehayuncuellodebotellaenlaCPU.Si sedetectauncuellodebotellaenlaCPU,esnecesarioagregarprocesadoresalservidororeducirlacargade trabajodelsistema.Lareduccindelacargadetrabajopuederealizarsemedianteelajustedelasconsultaso lamejoradelosndicesparareducirlaE/Sy,posteriormente,elusodelaCPU. OtrocontadordelMonitorderendimientoquehayqueobservarcuandosesospechaquehayuncuellode botellaenlaCPUes"Sistema:cambiosdecontextoporsegundo",yaqueindicaelnmerodevecespor segundoqueWindowsNTySQLServertenanquepasardeejecutarseenunsubprocesoaejecutarseenotro. EstoconsumerecursosdeCPU.Elcambiodecontextoesuncomponentenormaldeunentornoconvarios

EstoconsumerecursosdeCPU.Elcambiodecontextoesuncomponentenormaldeunentornoconvarios subprocesosyvariosprocesadores,perounexcesivocambiodecontextobloquearelsistema.Elmtodo quehayqueadoptarespreocuparsedelcambiodecontextosihaycoladeprocesador.Siseobservaunacola deprocesador,utiliceelniveldecambiodecontextocomoindicadorcuandoseajusteelrendimientodeSQL Server.PruebeautilizarlaopcindeagrupacincompactaparaqueSQLServercambieaunmodelode programacinbasadoenfibrasenlugardeutilizarmodelodeprogramacinpredeterminado,basadoen subprocesos.Piensequelasfibrassonsubprocesosdepocaimportancia.Utiliceelcomandosp_configure 'lightweightpooling',1parahabilitarlaprogramacinbasadaenfibra.Parasupervisarelefecto,observelacola delprocesadoryelcambiodecontexto. DBCCSQLPERF(SUBPROCESOS)proporcionamsinformacinacercadelusodelaE/S,delamemoriay delaCPUasignadoalosspids.EjecutelasiguienteconsultaSQLpararealizarunsondeodelosmayores consumidoresdeltiempodelaCPU:"select*frommaster.sysprocessesorderbycpudesc." ContadoresdeE/Sdedisco Loscontadores"Bytesescritosendiscoporsegundo"y"Bytesledosdeldiscoporsegundo"danunaideadel rendimientodedatosencuantoabytesporsegundoyporunidadlgica.Analiceestosnmeroscontodo cuidadojuntoa"Lecturasdediscoporsegundo"y"Escriturasendiscoporsegundo".Nodejequeunaescasa cantidaddebytesporsegundolelleveapensarqueelsubsistemadeE/Sdedisconoestocupado. Recuerdequeunsolodiscoduroescapazdeadmitiruntotalde75lecturasyescriturasdediscono secuencialesy150secuencialesporsegundo. Supervisela"Longituddelacoladedisco"detodaslasunidadesasociadasconlosarchivosdeSQLServery determinequarchivosestnasociadosaunaexcesivacoladediscos. SielMonitorderendimientoindicaquealgunasdelasunidadesnoestntanocupadascomootras,existela oportunidaddemoverarchivosdeSQLServerdesdelasunidadesquetienencuellosdebotellaalasunidades quenoestntanocupadas,loqueayudararepartirlaactividaddeE/Sdediscomsuniformementepor todoslosdiscosduros.SiseutilizaungranconjuntodeunidadesparalosarchivosdeSQLServer,lasolucin enlacoladediscosesaumentarlacapacidaddeE/Sdelconjuntoagregndolemsunidadesfsicas. LacoladediscospuedeserunsntomadequeuncanalSCSIestsaturadodesolicitudesdeE/S.ElMonitor derendimientonopuededetectardirectamentesisteeselcaso.Losdistribuidoresdehardwarepuedenser capacesdeproporcionarherramientasqueayudenadetectarlacantidaddeE/Squeatiendeunacontroladora deRAIDysistaestponiendoencolasolicitudesdeE/S.Seramsprobablequeestoocurrierasihay muchasunidadesdedisco(diezoms)conectadasalcanalSCSIytodasejecutanE/Salavelocidadmxima. Enestecaso,lasolucinseratomarlamitaddelasunidadesdediscoyconectarlasaotrocanalSCSIoaotra controladoradeRAIDparaequilibrardichaE/S.Normalmente,volveraequilibrarlasunidadesencanalesSCSI requierequesereconstruyanlasmatricesdeRAIDyqueserealiceunacopiadeseguridadoserestauren todoslosarchivosdebasesdedatosdeSQLServer. EjemplodelresultadogrficodelMonitorderendimiento Lafigura8muestraalgunoscontadorestpicosqueelMonitorderendimientopuedeutilizarparaobservar. FjeseenqueLongituddecoladelprocesadoreselcontadorqueseestobservandoactualmente.Se presionlatecla<RETROCESO>pararesaltarelcontadoractualenblanco.Estoayudaadistinguirel contadoractualdeotroscontadoresqueseestnobservandoypuedeserespecialmentetilcuandose observanmuchoscontadoresalmismotiempoconelMonitorderendimiento. FjeseenqueelvalormximodeLongituddecoladelprocesadorera22.Losvaloresmximo,mnimoymedio delgrficodelMonitorderendimientoabarcansolamentelaventanadetiempoactualdelgrfico,comoindica Tiempodegrfico.Enelcasopredeterminado,Tiempodegrficoabarca100segundos.Parasupervisar perodosdetiempomslargosyasegurarsedequelosvaloresmximo,mnimoymediodedichosperodos sonsuficientementerepresentativos,utilicelacaractersticaderegistrodelMonitorderendimiento.

Laformadelalneadelgrficodelacoladelprocesadorindicaqueelmximode22sloseprodujodurante unbreveperododetiempo.Sinembargohayunperodo,anterioralvalor22,enelquelalongituddecoladel procesadoressuperiora5(loquesedeterminacuandosemiraelgrficosabiendoqueel100porcienes22 yobservandoquehayunperododetiempoanterioralvalor22enelqueelgrficotienevaloresdemsdel25 porciento,queesaproximadamente5).Enesteejemplo,elservidordebasesdedatosllamado\\HENRYLNT2 tieneunsoloprocesadorynodebemantenerunalongituddecoladelprocesadorsuperiora2.Porlotantoel Monitorderendimientoindicaqueelprocesadordeestamquinaavecesestsobrecargadoyquehayque seguirinvestigandoparareducirlacargadelprocesadoroparaagregarmsprocesadoresa\\HENRYLNT2 conelfindequestegestionecorrectamenteestosperodosdemayorescargasdetrabajo.

Figura8ResultadodelgrficodelMonitorderendimiento

Diversostemasrelativosalrendimiento
Reducireltrficoderedyelconsumoderecursosdelosservidoresdebasesde datos
LosprogramadoresdebasesdedatosquerealizantareasdeSQLconinterfacesfcilesdeutilizar,comolas APIdebasesdedatosADO/RDO/DAO,tienenlaresponsabilidaddeconocerperfectamentelosconjuntosde resultadosqueestncreando.ADO/RDO/DAOproporcionanalosprogramadoresgrandesinterfacesde desarrollodebasesdedatosquepermitenunagranfuncionalidaddelosconjuntosdefilasdeSQLsinque seannecesariosgrandesconocimientosdeprogramacinenSQL.Sinembargo,estosuponeuncosto.Los programadorespuedenexponerseaproblemasderendimientosinotienenmuyencuentalacantidadde datosquesuaplicacindevuelvealclienteydebenconocerellugarenelquesecolocanlosndicesdeSQL ServerycmoseorganizarnlosdatosdeSQLServer.ElAnalizadordeSQL,elAsistenteparaoptimizacin dendicesyelPlandepresentacinsonherramientasmuytilesparadetectarysolucionarestasconsultas problemticas. Busqueoportunidadesparareducireltamaodelconjuntoderesultadosquesedevuelve,paraloquedebe eliminarlascolumnasdelalistaseleccionadaquenotenganquedevolverseodevolversolamentelasfilas solicitadas.EstoayudaareducirelconsumodeE/SydelaCPU. Paraobtenermsinformacin,busquelascadenas"Optimizarelrendimientodelasaplicacionesconuna recuperacineficazdedatos","Comprenderyevitarlosbloqueos"y"Diseodeaplicaciones"enlosLibrosen pantalladeSQLServer.

Interbloqueos
SilasaplicacionesquetienenaccesoaSQLServerestncreadasdetalformaquelastransaccionestengan accesoalastablasenelmismoordencronolgicoentodaslastransaccionesdelosusuarios,seevitarnlos interbloqueos.MerecelapenaexplicarcontodaclaridadalosprogramadoresdeaplicacionesSQLeste conceptodeaccesocronolgicoalastablasloantesposibleduranteelprocesodediseodeaplicaciones. Elloayudaraevitarproblemasdeinterbloqueoqueresultarnmscarosderesolverposteriormente. ReduzcalaE/SdelasconsultasSQLyeltiempodelastransacciones:staesunaformaindirectadeevitarel interbloqueoyalgoque,encualquiercaso,debehacerseentodaslasconsultassinembargopuederesultar deayuda,yaquealagilizarlasconsultas,losrecursosdebloqueosemantienenduranteunmenorperodode tiempoysereducirntodaslaslimitacionesdelbloqueo(incluidoelinterbloqueo).UtiliceESTADSTICASDE E/SdelAnalizadordeconsultasdeSQLparadeterminarelnmerodeobtencionesdepginaslgicas asociadasconconsultasgrandes.Tengaencuentalosndicesutilizadosseleccionandolaopcin"Mostrar plan"delAnalizadordeconsultasdeSQL.Pienseenlacolocacindelosndicesoenelnuevodiseodelas consultasSQLqueseamseficazy,porconsiguiente,queutilicemenosE/S. Paraobtenermsinformacin,busquelascadenas"Evitarlosinterbloqueos","Solucionarproblemasde interbloqueo","Detectaryfinalizarlosinterbloqueos"y"Analogaconlastransaccionesnoserializables"enlos LibrosenpantalladeSQLServer.

SintaxisSQLqueconvieneevitar
ElusodeoperadoresdediferenciaenlasconsultasSQLobligaralasbasesdedatosautilizarlas exploracionesdetablasparaevaluarlasdiferencias,loquegeneraunagranE/Ssiestasconsultasseejecutar normalmentesobretablasmuygrandes.

Ejemplos: WHERE<nombreColumna>!=unValor WHERE<>nombreColumna><unValor CualquierexpresinWHEREconNOTenella Sitienequeejecutarestostiposdeconsultas,intentereestructurarlasparaeliminarlapalabraclaveNOT. Ejemplo: Enlugarde: select*fromtablaAwherecol1!="value" Pruebeautilizar: select*fromtablaAwherecol1<"value"orcol1>"value" EstopermitequeSQLServerhagausodelosndices(enestecaso,preferentementeagrupados),siestn creadosencol1enlugardetenerquevolveraordenarenunaexploracindetabla.

Normalizacininteligente
Entablasmuyinteractivas(conmuchoacceso),sihaycolumnasquelasaplicacionesSQLnosuelennecesitar, esrazonablemoverlasaotratabla.Cuantasmscolumnasseeliminen,mssereducirlaE/Syms aumentarelrendimiento.Paraobtenermsinformacin,busquelascadenas"Diseolgicodebasesde datos"y"Normalizacin"enlosLibrosenpantalladeSQLServer.

Vistasconparticiones
SQLServer7.0permitecrearparticioneshorizontalesdelastablasmediantelasvistas,loquemejorael rendimientodeE/ScuandolosusuariosdelabasededatosmantienenconsultasSQLquehacenreferenciaa unnombredetabla,perolanaturalezadelarecuperacindedatosesquelasconsultassiempreserealizarn sobresubseccionesfijasdelosdatos.Porejemplo,imaginequehayunatablamuygrandequedocumentalas ventasdetodoslosdepartamentosdeventasduranteunaoeimaginetambinquetodaslasrecuperaciones deestatablasebasarnenunsolodepartamentodeventas.steesunescenarioenelquesepodraemplear unavistaconparticiones.Sedefiniraunatabladeventasparacadaunodelosdepartamentosdeventas,hay quedefinirunalimitacinenlacolumnadeldepartamentodeventasdecadatablay,acontinuacin,secreara unavistaentodaslastablasparaformarunavistaconparticiones.Eloptimizadordeconsultasutilizala restriccindelacolumnadeldepartamentodeventas.Cuandoserealizaunaconsultasobrelavista,el optimizadordeconsultasignorartodaslastablasdeldepartamentodeventasquenocoincidanconelvalor deldepartamentodeventasqueproporcionalaconsultaynoseejecutarningunaE/Ssobredichastablas base.EstomejoraelrendimientodelasconsultasmediantelareduccindelaE/S. Paraobtenermsinformacin,busquelascadenas"Escenariosdeutilizacindevistas","Creacindevistas", "Utilizarvistascondatosparticionados","Modificardatosatravsdeunavista","Copiarenodesdevistas"y "Crearparticiones"enlosLibrosenpantalladeSQLServer.

Rendimientodelareplicacinydelascopiasdeseguridad
TenerlaseguridaddequeelsubsistemadeE/SdediscoylasCPUfuncionancorrectamenteproporcionar ventajasderendimientoatodaslasoperacionesdeSQLServer.Entreellasseincluyenlareplicacinylas copiasdeseguridad.Lareplicacindelastransaccionesylascopiasdeseguridaddelosregistrosdelas transaccionesimplicanlalecturadelosarchivosdelosregistrosdelastransacciones.Lareplicacinde

transaccionesimplicanlalecturadelosarchivosdelosregistrosdelastransacciones.Lareplicacinde instantneasylascopiasdeseguridadrealizanexploracionesenseriedelosarchivosdebasededatos.Las nuevasestructurasdealmacenamientodeSQLServer7.0sehanmejoradoparaagilizaryaumentarlaeficacia deestasoperaciones,mientrasnohayacolasenlaCPUoenelsubsistemadediscosdelservidordebases dedatos. Paraobtenermsinformacinacercadelareplicacinydelascopiasdeseguridadydelasrestauracionesde lamejoradelajuste,busquelascadenas"Rendimientodeduplicacin","Optimizarelrendimientodelacopia deseguridadyrestauracin","Crearyrestaurarcopiasdeseguridaddiferencialesdebasesdedatos","Crear yaplicarcopiasdeseguridadderegistrosdetransacciones","Utilizarvariosmediosodispositivos", "Minimizarlostiemposderealizacinyrecuperacindecopiasdeseguridadenentornosdegran importancia","Arquitecturadelacopiadeseguridadylarestauracin"y"SQLServer7.0engrandes servidores"enlosLibrosenpantalladeSQLServer.

UnescenarioespecialdeajustedelaE/Sdedisco:Matrizdediscosencache integradadeEMCSymetrix
ParaaquellosqueimplementansistemasdebasesdedatosSQLServerenlossistemasdealmacenamiento paraempresasdeEMCSymmetrix,hayalgunosmtodosdeequilibriodelaE/Sdediscoquenohayque olvidardadalanaturalezanicadelalmacenamientoEMCSymmetrixqueayudaraevitarlosproblemasde cuellodebotellaenlaE/Sdediscoyaaumentarelrendimiento. LossistemasdealmacenamientodeSymmetrixcontienenunmximode16gigabytesdecachdeRAMy contienenprocesadoresinternosdentrodelamatrizdediscosqueayudanaagilizarelprocesamientode datosdeE/SsinutilizarlosrecursosdelaCPUdelservidorhost.DentrodelacajadeSymmetrix,haycuatro componentesprincipalesdelosquehayquepreocuparseparaconocerloquedebehacerseparaequilibrarla E/Sdedisco.Unoeslacachde16GBdentrodeSymmetrix.Hayunmximode32canalesSAquese puedenusarparaconectarmediantecableunmximode32tarjetasSCSIdelosservidoreshostWindowsNT conSymmetrixtodosestoscanalesSApuedensolicitardatossimultneamentealacachde16GB. Adems,dentrodelacajadeSymmetrix,hayunmximode32conectores,denominadoscontroladoresDA, quesoncontroladoresSCSIinternosqueconectantodaslasunidadesdediscointernasdeSymmetrixconla cachinterna.Parafinalizar,dentrodeSymmetrixhaydiscosduros. UnanotaacercadelosdiscosdurosEMC:haydiscosdurosSCSIconlamismacapacidaddeE/Squeotras unidadesSCSIquesehanexplicadoenestedocumento(aquseaplicalaregla75/150).Unacaracterstica quesesueleutilizarenlatecnologaEMCrecibeelnombrede"hipervolmenes".Unhipervolumensedefine comounadivisinlgicadeundiscoduroEMCtalqueelAdministradordediscosdeWindowsNTla aparienciadelhipervolumenescomoladeotraunidadfsica,porloquepuedemanipularseconel AdministradordediscosdeWindowsNTdeigualformaquelosrestantesdiscosduros.Encadaunidadfsica sepuedendefinirvarioshipervolmenes.Esmuyimportantequecuandoserealizaelajustedelrendimientode lasbasesdedatosdelalmacenamientoEMCasegurarsedetrabajarcooperarconlosingenierosdecampo deEMCparaidentificarcmosedefinenloshipervolmenes(sihayalguno),yaqueesimportanteevitarla sobrecargadeunaunidadfsicaconE/Sdebasededatos.Estopuedesucederfcilmentesisecreequedos omshipervolmenessonunidadesfsicasdiferentes,peroenrealidadsondosomshipervolmenesenla mismaunidadfsica. LasactividadesdeE/SdeSQLServerdebendividirseuniformementeentrelasdistintascontroladorasDA. EllosedebeaquelascontroladorasDAseasignanaunconjuntodefinidodediscosduros.Talcomoseha descritoanteriormenteenestedocumento,nosonfrecuentesloscuellosdebotellaenlascontroladorasSCSI. NoesprobablequelascontroladorasDAsufranningncuellodebotellaenlaE/S,peroelconjuntodediscos durosasociadosconunacontroladoraDApuedesermssusceptible.Dentrodelcontextodelascontroladoras DAydesusunidadesdediscoasociadas,elequilibriodeE/SdediscodeSQLServerselogradelamisma formaqueenlosdiscosdurosoenlascontroladorasdeotrosfabricantes. DesdeelpuntodevistadesupervisindelaE/SenuncanalDAoendiscosdurosindependientes,solicite

ayudaalpersonaldesoportetcnico,yaqueestaactividaddeE/Sseproducepordebajodelacachinterna deEMCyelMonitorderendimientonolave.LasunidadesdealmacenamientoEMCtienenherramientasde supervisininternaquepermitirnauningenierodesoportetcnicodeEMCsupervisarlasestadsticasdeE/S deSymmetrix.ElMonitorderendimientoslopuedeverlaE/Squesaledeyllegaalasunidadesde almacenamientoEMCpormediodelaE/SqueprovienedelcanalSA.Estainformacinessuficientepara indicarqueunacanalSAdeterminadoestponiendoencolasolicitudesdeE/Sdedisco,peronopuede indicarqudiscoodiscosestnoriginandolacola.SiuncanalSAestencola,noesnecesariamentequeel canalSAestcausandoelcuellodebotella,yaquesepodradarelcaso(loqueeslomsprobable)deque losdiscosdurosestuvierancausandoproblemas.UnaformadeaislarelcuellodebotelladelaE/Sdedisco entreloscanalesSAyloscanalesDA+lasunidadesesagregarotratarjetaSCSIalservidorhostyconectarlo aotrocanalSA.SielMonitorderendimientoindicaquelaE/SenamboscanalesdeE/Snohacambiado ostensiblementeyquesigueproducindosecoladediscos,indicaquenosonloscanalesSAloqueest originandoelcuellodebotella.OtraformadeaislarelcuellodebotelladeE/SesqueuningenierodeEMC controleelsistemaEMCyanaliceconlasherramientasdesupervisindeEMCquunidadesocanalesDA tienenalgncuellodebotella. DividalasactividadesdeSQLServeruniformementeentantasunidadesdediscocomohayadisponibles.Si trabajaconunabasededatosmenorenlaquevaahaberunagrancantidaddeE/S,estudiecondetenimiento eltamaodelhipervolumenquetienenquedefinirlosingenierostcnicos.ImaginequeelservidorSQLServer vaaconstardeunabasededatosde30GB.LacapacidadmximadelosdiscosdurosEMCesde23GB. Porconsiguiente,sonnecesariosdosdiscosdurosparapoderalbergarlabasededatos.Desdeelpuntode vistadelafacilidaddeusoydelcosto,estopodrapareceratractivo,perodesdeelpuntodevistadel rendimientodeE/S,noloes.LasunidadesdealmacenamientoEMCpuedentenermsdecienunidades internasconlasquetrabajar.LautilizacindedosunidadesparaSQLServerpuedeprovocarcuellosde botellaenlaE/S.Esposiblequedebadefinirhipervolmenesmenores,quizde2GBcadauno,loque significaquecercade12hipervolmenespuedenestarasociadosconundiscodurode23GBdeterminado. Siloshipervolmenessonde2GB,senecesitarn15paraalmacenarlabasededatos.Asegresedeque cadahipervolumenestasociadoconundiscodurofsicoindependiente.Noutilice12hipervolmenesdeuna unidadfsicayposteriormenteotrostreshipervolmenesasociadosenotraunidadfsica,yaqueeslomismo queutilizardosunidadesfsicas(150E/Snosecuenciales/300E/Ssecuencialesendosunidades).Perocon 15hipervolmenes,cadaunodeloscualesestasociadoaundiscofsicoindependiente,SQLServerutilizar quinceunidadesfsicasparaproporcionarE/S(1125E/Snosecuenciales/2250E/Ssecuencialespor segundoenlasquinceunidades). ConsideretambinlaposibilidaddeemplearvarioscanalesSAdesdeelservidorhostparadividireltrabajo deE/Sentrelascontroladoras,loquetienemuchosentidoenlosservidoreshostqueadmitenmsdeunbus PCI.Enestecaso,quizdebautilizaruncanalSAporbusPCIdeservidorhostparadividireltrabajodeE/S porlosbusesPCIyporloscanalesSA.EnlossistemasdealmacenamientoEMC,cadaunodeloscanalesSA estasociadoconuncanalDAdeterminadoy,porconsiguiente,conunconjuntoespecficodediscosduros fsicos.DadoqueloscanalesSAleenyescribensusdatosdeyenlacachinternaEMC,noesprobableque seproduzcaningncuellodebotellaenelcanalSA.Sinosceimosalaideadequenosonprobableslos cuellosdebotellaenlacontroladoraSCSI,esprobablequeseamsconvenienteinvertireltiempoenequilibrar lasactividadesdeSQLServerenlasunidadesfsicasenlugardepreocuparsedemasiadoporelnmerode canalesSAquesevanautilizar.

Paraobtenermsinformacin
LosLibrosenpantalladeMicrosoftSQLServerofreceninformacinacercadelaarquitecturayelajuste delasbasesdedatosdeSQLServer,juntoconunacompletadocumentacindelasintaxisyla administracindeloscomandos.LosLibrosenpantalladeSQLServerpuedeninstalarsedesdeel medioatravsdelqueseinstaleSQLServerencualquierclienteoservidorSQLServer.Esaconsejable quetodaslasmquinasenlasquevayaahaberalguientrabajandoactivamenteenSQLServertengalos LibrosenpantalladeSQLServerinstaladoseneldiscoduroparafacilitarelaccesoaellos. Paraobtenermsinformacin,consulteMicrosoftTechNet.

Paraobtenermsinformacin,consulteMicrosoftTechNet. ParaobtenerlainformacinmsrecienteacercadeMicrosoftSQLServer,incluidasotrasnotasdel productoacercadeSQLServer7.0,visiteelsitioWebdeMicrosoftSQLServer,en http://www.microsoft.com/latam/sql/. CompaqhaactualizadosudocumentacindeRAID,queproporciona50pginasdeexcelente informacinacercadelrendimientodelservidordebasesdedatos.Tengaencuentaquelastrespginas coninformacinespecficadeMicrosoftSQLServerquecontieneestadocumentacinexplicanlaversin 6.5yquenosepuedenaplicaraSQLServer7.0.Elttulodeldocumentoes"ConfiguringCompaqRAID TechnologyforDatabaseServers(ConfigurarlatecnologaRAIDdeCompaqparaservidoresdebases dedatos)"yseencuentraenhttp://www.compaq.com/support/techpubs/whitepapers/ecg0110598.html. UndocumentodetreintapginasdelequipodeintegracindeWindowsNTdeCompaqtitulado"Disk SubsystemPerformanceandScalability(Rendimientoycapacidaddeampliacindelsubsistemade discos)"seencuentraenhttp://www.compaq.com/support/techpubs/whitepapers/ecg0250997.html.Enl sedetallanlascaractersticasdelrendimientodelhardwaredelosdiscosdurosdeCompaqyel comportamientodesusunidadesfsicas.Lainformacinquecontieneestedocumentosepuedeaplicar alosdiscosdurosSCSIdeCompaqodeotrosdistribuidores. Celko,Joe.SQLforSmarties.MorganKaufmannPublishers,ISBN1558603239. Estelibrocontieneinformacinrealmentetil.Contienesolucionesaproblemashabituales,comola representacinylasconsultasdelosdatosjerrquicos.ElCaptulo28estdedicadoalaoptimizacinde consultasSQL. 1998,MicrosoftCorporation.Reservadostodoslosderechos. LainformacincontenidaenestedocumentorepresentalavisinactualdeMicrosoftCorporationacercadelos asuntosabordadosenlafechadesupublicacin.ComoMicrosoftdeberesponderacondicionesdemercado variables,nodebeinterpretarsecomouncompromisoporpartedeMicrosoftyMicrosoftnopuedegarantizarla precisindelainformacinquesepresentadespusdelafechadepublicacin. Estedocumentoseproporcionaconpropsitoinformativonicamente.MICROSOFTNOOTORGANINGUNA GARANTA,NIIMPLCITANIEXPLCITA,ENESTEDOCUMENTO. EllogotipodeBackOffice,Microsoft,Windows,SQLServeryWindowsNTsonmarcasregistradasde MicrosoftCorporation. Otrosnombresdeproductosycompaasmencionadosaqupuedensermarcascomercialesdesus respectivospropietarios. MicrosoftCorporationOneMicrosoftWayRedmond,WA980526399USA

También podría gustarte