Segments by Row Lock Waits

Category: Performance and Tunning 11 years ago
Hola, quisiera una recomendación sobre como puedo evitar lock waits en una tabla, pues es muy pequeña, solo tiene una columna y 5 registros. Lo que hice ahorita es moverla a un tablespace de 4K, pero no creo que ayude mucho por su tamaño. Ustedes que me recomiendan. Como note les comento que es un cluster con dos nodos.

[quote]Segments by Row Lock Waits DB/Inst: INST1/INST1I1 Snaps: 708-714
-> % of Capture shows % of row lock waits for each top segment compared
-> with total row lock waits for all segments captured by the Snapshot

Row
Tablespace Subobject Obj. Lock % of
Owner Name Object Name Name Type Waits Capture
---------- ---------- -------------------- ---------- ----- ------------ -------
DEMO TBL1 QRTZ_LOCKS TABLE 802 88.82
DEMO TBL1 PK__CHANGE_SET_ITEM_ INDEX 18 1.99
DEMO TBL1 PK__AE_INBOX__774C60 INDEX 17 1.88
DEMO TBL1 PK_EQTY_PRICE_CAPITA INDEX 14 1.55
DEMO TBL1 ORDERS TABLE 10 1.11
-------------------------------------------------------------[/quote]

Gracias
Like it on Facebook, +1 on Google, Tweet it or share this topic on other bookmarking websites.
  • Re: Segments by Row Lock Waits

    by » 11 years ago


    Hola, qué tal?
    El que hayas creado un tablespace con bloque de 4KB, no te ayudará mucho ya que no es su propósito. Imaginemos una base de datos de tipo Datawarehouse, donde la mayoría de queries son de lectura normalmente (reportes financieros, etc)y muy DML. Pues dado el caso, creaste la base de datos con un bloque de datos de 16KB. Pero resulta, que tienes algunas (muy pocas) tablas grandes que sí son modificadas (DML) constantemente. Pues lo mejor sería, crear un tablespace de 4KB exclusivamente para esas tablas, ajustar el área de memoria db_4k_cache_size y listo!

    Los bloqueos es un tema más del diseño de la aplicación (como un deadlock también lo es). Yo me fijaría en qué comando se lanza exactamente cuando se producen los bloqueos. Y fíjate qué tipo de bloqueo es... tal vez no es un insert, update o delete... puede ser un "select for update" y deja el bloqueo más tiempo del que necesita realmente.

    Haz un join de v$locked_object y all_objects (campo en común object_id), para que veas el tipo de bloqueo en el campo lock_mode y puedas darle un buen consejo al equipo de desarrollo.

    Valores del Campo "lock_mode":

    0=None
    2=Row-S (SS)
    3=Row-X (SX)
    4=Share (S)
    5=S/Row-X (SSX)
    6=Exclusive (X)

    Nota: Estaré fuera unos días pero otro moderador te echará una mano en cualquier problema de BD!!

    Un saludo!
    Carlos Contreras.

    DBASupport Team

  • Re: Segments by Row Lock Waits

    by » 11 years ago


    Gracias carlos de echo si cree un tablespace de 4k y modifica el are de memoria de 4k. Realice este cambio porque estas tablas son muy transaccionales pues reciben demasiados inserts, updates y selects por segundo y desde dos nodos. Voy a revisar la vista v$locked_object como comentas.

    Gracias

You do not have permissions to reply to this topic.
Powered by CjForum