찾다

oracle性能调优之

Jun 07, 2016 pm 03:01 PM
oracle최적화공유됨성능동조조정

--======================================= --共享池的调整与优化(Sharedpool Tuning) --======================================= 共享池 ( Shared pool ) 是SGA中最关键的内存片段 , 共享池主要由库缓存 ( 共享SQL区和PL / SQL区 ) 和数据字典缓存组成。

--=======================================

-- 共享池的调整与优化(Sharedpool Tuning)

--=======================================

 

    共享池(Shared pool)是SGA中最关键的内存片段,共享池主要由库缓存(共享SQL区和PL/SQL区)和数据字典缓存组成。其中库缓存的作用是存

放频繁使用的sqlpl/sql代码以及执行计划。数据字段缓存用于缓存数据字典。在内存空间有限的容量下,数据库系统根据一定的算法决定何

时释放共享池中的sqlpl/sql代码以及数据字典信息。下面逐一解释各个部件并给出调整方案。

 

一、共享池的组成

    Library cache(库缓存)                    --存放SQL ,PL/SQL 代码,命令块,解析代码,执行计划

    Data dictionary cache(数据字典缓存)      --存放数据对象的数据字典信息

    User global area(UGA) for sharedserver session --用于共享模式,可以将该模块移到laregpool来处理。专用模式不予考虑。

       

二、Library cache 作用与组成

    Library Cache 由以下四个部件组成

        Shared SQL areas

        Private SQL areas

        PL/SQL proceduresand packages

        Various controlstructures

    Library Cache 作用 

        存放用于共享的SQL命令或PL/SQL块

        采用LRU算法(最近最少使用算法)

        用于避免相同代码的再度解析

        ORA-04031则表明共享池不够用

   

三、Data dictionary cache组成与作用

    组成

        Row cache

        Library cache

    作用

        存储数据库中数据文件、表、索引、列、用户和其它数据对象的定义和权限信息

       

四、Shared pool的大小

    Library cache与Data dictionarycache两者共同组成了shared pool的大小,由参数shared_pool_size来决定

        查看:show parametershared_pool_size

        修改:alter system set shared_pool_size=120m;

   

    sys@ORCL> select * from v$version where rownum  2;

 

    BANNER

    ----------------------------------------------------------------

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

 

    sys@ORCL> show parameter shared_pool_

 

    NAME                                 TYPE        VALUE

    ----------------------------------------------- ------------------------------

    shared_pool_reserved_size            biginteger 3M

    shared_pool_size                     biginteger 0         --为0,表明由系统自动分配

 

    sys@ORCL> show parameter sga_

 

    NAME                                 TYPE        VALUE

    ----------------------------------------------- ------------------------------

    sga_max_size                         biginteger 176M

    sga_target                           biginteger 176M           --非零值,表示由系统自动调整sga

 

五、SGA_MAX_SIZESGA_TARGET   

    sga_max_size 决定了为Oracle分配内存的最大值

    sga_target   决定了基于sga_max_size的大小来自动分配内存,sga_target  sga_max_size

    sga_target会为下列组件自动分配内存

        Buffer cache

        Shared pool

        Larege pool

        Jave pool

        Streams pool

    当设定sga_target参数为非零值,且又单独设定sga_target的五个组件为非零值,在这种情形下,这几个组件设定的值则为该组件所必须要

    分配的最小值。

 

    下列sga组件不受sga_target的管理和影响,即需要单独为以下几个组件分配大小

        Log buffer(日志缓冲)

        Other buffer caches,such as KEEP, RECYCLE, and other block sizes(保留池,回收池,nK 池)

        Fixed SGA and otherinternal allocations

 

    有关SGA的自动管理,更详细请参考:Oracle10g SGA 的自动化管理

 

六、Librarypool 共享SQL,PL/SQL 代码标准

    当发布一条SQL或PL/SQL命令时,Oracle会自动寻找该命令是否存在于共享池中来决定对当前的语句使用硬解析或软解析。

    SQL语句的执行过程如下:

    a.SQL代码的语法(语法的正确性)及语义检查(对象的存在性与权限)

    b.将SQL代码的文本进行哈希得到哈希值

    c.如果共享池中存在相同的哈希值,则对这个命令进一步判断是否进行软解析,否则到e步骤。

d.对于存在相同哈希值的新命令行,其文本将与已存在的命令行的文本逐个进行比较。这些比较包括大小写,字符串是否一致,空格,        注释等,如果一致,则对其进行软解析,转到步骤f。否则到d步骤。

    e.硬解析,生成执行计划。

    f.执行SQL代码,返回结果。

 

    有关硬解析与软解析请参考:Oracle 硬解析与软解析

 

七、共享池中闩的竞争

    共享池中闩的竞争或Library cache闩的竞争表明存在下列情形

        非共享的SQL需要硬解析

        重新解析共享的SQL(由于Librarycache大小不足导致共享的SQL被LRU算法淘汰掉)

        过多的负荷导致Librarycache 大小不足

       

八、v$librarycache视图

    scott@ORCL > desc v$librarycache;

     Name                          Null?    Type

     ----------------------------- ----------------------

     NAMESPACE                              VARCHAR2(15)  --存储在库缓存中的对象类型,值为SQLarea,table/procedure,body,trigger

     GETS                                   NUMBER   --显示请求库缓存中的条目的次数(或语句句柄数)

     GETHITS                                NUMBER   --显示被请求的条目存在于缓存中的次数(获得的句柄数)

     GETHITRATIO                            NUMBER   --前两者之比

     PINS                                   NUMBER   --位于execution阶段,显示库缓存中条目被执行的次数

     PINHITS                                NUMBER   --位于execution阶段,显示条目已经在库缓存中之后被执行的次数

     PINHITRATIO                            NUMBER   --前两者之比

     RELOADS                                NUMBER   --显示条目因过时或无效时在库缓存中被重载的次数

     INVALIDATIONS                          NUMBER   --由于对象被修改导致所有参照该对象的执行计划无效的次数,需要被再次解析

     DLM_LOCK_REQUESTS                      NUMBER

     DLM_PIN_REQUESTS                       NUMBER

     DLM_PIN_RELEASES                       NUMBER

     DLM_INVALIDATION_REQUESTS              NUMBER

     DLM_INVALIDATIONS                      NUMBER

 

    get表示请求条目或对象、获得对象句柄;

    pin根据句柄找到实际对象并执行,但对象内容可能因为老化而pin不到所以出现reload;

    一个session需要使用一个object时,如果是初次使用,则必然是先get然后pin并维护这个object的句柄。下次再使用这个object时,因为

    已经维护该句柄,所以直接pin而没有了get过程。如果对象老化则移除共享池,再次请求则会出现reload。

 

    有关Library cache的详细说明:V$LIBRARY

 

    由上面所列出的字段可知,v$librarycache视图可以用来监控librarycache的活动情况。

    重点关注字段

        RELOADS列:表示对象被重新加载的次数,理论上该值应该接近于零。过大是由于对象无效或librarypool过小被换出。

        INVALIDATIONS:列表示对象失效的次数,对象失效后,需要被再次解析。

        GETHITRATIO:该列值过低,表明过多的对象被换出内存。

        GETPINRATIO:该列值过低,表明会话没有多次执行相同的游标,即使对象被不同的会话共享或会话没有找到共享的游标。

   

    下面查询v$librarycache的性能状况:

        sys@ASMDB > select * from v$version where rownum  2;

 

        BANNER

        ----------------------------------------------------------------

        Oracle9iEnterprise Edition Release 9.2.0.1.0 - 64bit Production

       

        SELECT namespace,gets,gethits,ROUND(GETHITRATIO*100,2) gethit_ratio,pins,pinhits,

          ROUND(PINHITRATIO*100,2) pinhit_ratio,reloads,invalidations FROM v$librarycache;

 

        NAMESPACE             GETS    GETHITSGETHIT_RATIO       PINS    PINHITSPINHIT_RATIO    RELOADS INVALIDATIONS

        --------------- ---------- ---------------------- ---------- ---------- ------------ ---------- -------------

        SQLAREA         336824947  326237186        96.861137146337 1113509653        97.92    1202492      38273

        TABLE/PROCEDURE 15363106111536263944          10015914153431591166141        99.98      85574          0

        BODY                144906     143990        99.37     144969     142474        98.28        128          0

        TRIGGER           47765371   47765105          100   47765381   47765113          100          0          0

        INDEX              1104164    1103706        99.96    1104133    1103467        99.94          0          0

        CLUSTER              42341      42038        99.28      42860      42260         98.6          0          0

        OBJECT                   0          0          100          0          0          100          0          0

        PIPE                     0          0          100          0          0          100          0          0

        JAVASOURCE             40         19         47.5         40         19         47.5          0          0

        JAVARESOURCE           40         19         47.5         40         19         47.5          0          0

        JAVADATA              116         71        61.21        237        147        62.03          0          0

 

    分析上面的查询,在此仅仅分析SQL AREA对象,其余的类似分析

    a.在SQL AREA中,执行的次数为次1137146337 (PINS 列)。

    b.重载(RELOADS)的次数为1202492,表明一些对象无效或因librarycache过小被agedout,则这些对象被执行了重载。

    c.无效的对象(INVALIDATIONS)为38273次。

    d.基于查询的结果,可以用于判断shared_pool_size的reloads,invalidations的情况,是否调整share_pool_size请参考后面十,十一,十二点

   

九、数据字典缓存(data dictionary cache)

    使用视图v$rowcache获取数据字典缓存的信息

        该视图中包含字典对象的定义信息

        gets: 请求对象的次数

        getmisses:在data dictionarycache中请求对象失败的次数

    调整目标:避免请求失败

    也可根据statspack来调整data dictionary cache

    通常情况下,应保证数据字典缓存命中率为95%或高于95%

        --下面查询数据字典缓存的命中率与缺失率

        SELECT ROUND(((1-SUM(getmisses)/(SUM(gets)+SUM(getmisses))))*100,3) "Hit Ratio"

            ,ROUND(SUM(getmisses)/sum(gets)*100,3) "Misses Ratio"

        FROM v$rowcache

        WHERE gets + getmisses  0;

       

        HitRatio Misses Ratio

        --------- ------------

           99.865         .135

 

    缺失率应当低于以下百分比

        2%  对于常用的数据字典对象

        15% 整个数据字典缓冲对象

   

    整个数据字典的缺失率

        SELECT ROUND((100*SUM(getmisses)/decode(SUM(gets),0,1,SUM(gets))),2)  Getmiss_ratio

        FROM v$rowcache;

       

        GETMISS_RATIO

        -------------

                .14

               

    不同的组件对象检查组件的缺失率及命中率的情况

        SELECT parameter

                 ,SUM(gets)

                 ,SUM(getmisses)

                 ,ROUND((100*SUM(getmisses)/decode(SUM(gets),0,1,SUM(gets))),2)  Getmiss_ratio

                 ,ROUND((100*SUM(gets-getmisses)/SUM(gets)),2)  Hit_Ratio

                 ,SUM(modifications) updates

        FROM v$rowcache

        WHERE gets>0

        GROUP BY parameter

        ORDER BY Getmiss_ratio DESC,Hit_Ratio DESC;

 

        PARAMETER                         SUM(GETS) SUM(GETMISSES) GETMISS_RATIO  HIT_RATIO    UPDATES

        ------------------------------------------ -------------- ------------- ---------- ----------

        dc_qmc_cache_entries                      1              1           100          0          0

        dc_constraints                           54             31         57.41      42.59         54

        dc_tablespace_quotas                    976            198         20.29      79.71        976

        dc_files                                539             32          5.94      94.06          3

        dc_global_oids                       564058           2459           .44      99.56          0

        dc_histogram_defs                 185645793         223703           .12      99.88          0

        dc_objects                         73470326          30375           .04      99.96       2228

        dc_segments                       112544251          50126           .04      99.96       2198

        dc_sequences                        7814295           1453           .02      99.98    7814291

 

        关于dc_qmc_cache_entries为100%还不清楚,请大家指正。

 

十、优化Library cache

    总原则尽可能使代码解析最小化

        确保用户尽可能使用共享的SQL执行计划

        为Librarycache分配更多的空间以避免淘汰最老的代码与执行计划

        避免无效的再度解析(如Librarycache已经存在某个对象的解析,而该对象结构发生了变化)

    避免Library cache中过多的碎片

        为Library cache使用保留空间

        锁定一些频繁使用的对象到Librarycache中,以避免LRU算法淘汰掉

        排除较大的PL/SQL匿名块或对其进行拆分

        对于共享服务器模式可以分配largepool给UGA,避免对共享池的争用  

       

十一、调整shared_pool_size

    1.监控对象的重载情况

        SELECT NAMESPACE,

               GETS,

               GETHITS,

               round(GETHITRATIO * 100, 2) gethit_ratio,

               PINS,

               PINHITS,

               round(PINHITRATIO * 100, 2) pinhit_ratio,

               RELOADS,

               INVALIDATIONS

        FROM   V$LIBRARYCACHE;   --考虑是否存在过多的reloads和invalidations

       

    2.当库缓存的重载率大于零,应考虑增大shared_pool_size

 

        SELECT SUM(pins) "Executions",SUM(reloads) "CacheMisses while Executing",

           ROUND(SUM(reloads)/SUM(pins)*100,2) AS "Reload Ratio, %" FROM V$LIBRARYCACHE;

 

        ExecutionsCache Misses while Executing Reload Ratio, %

        ---------- -------------------------------------------

        2777717625                      1288253             .05

 

    3.库缓存的命中率应保持在95%,否则应考虑增大shared_pool_size

        SELECT SUM(pins) "Executions",SUM(reloads) "CacheMisses while Executing",

          ROUND((SUM(pins)/(SUM(reloads)+SUM(pins)))*100,2)

          "HitRatio, %" FROM V$LIBRARYCACHE;

 

        ExecutionsCache Misses while Executing Hit Ratio, %

        ---------- ----------------------------------------

        2777727542                      1288257        99.95

   

    4.估算Library cache占用大小,shared pool的可用空间,总大小

   

        --查看共享池可用空间,当sharedpool有过多的可用空间,再调大shared pool则意义不大       

            SELECT pool,name,bytes/1024/1024 FROM v$sgastat WHERE name LIKE '%free memory%' AND pool = 'sharedpool';

 

            POOL        NAME                       BYTES/1024/1024

            ----------- -----------------------------------------

            sharedpool freememory                     97.6241302

                   

        --查询已使用的Library cache大小总和

            WITH cte AS(

                SELECT SUM(sharable_mem) sharable_mem_count   --查询非SQL语句(包,视图)占用的Library cache大小

                FROM v$db_object_cache

                UNION ALL

                SELECT SUM(sharable_mem)                      --查询SQL语句占用的Librarycache大小      

                FROM v$sqlarea

                )

            SELECT SUM(sharable_mem_count)/1024/1024          --查询已使用的Library cache大小总和

            FROM cte;                                         --实际上还有一部分为用户游标使用占用的空间,此处略去

           

            SUM(SHARABLE_MEM_COUNT)/1024/1024

            ---------------------------------

                             820.59599971771

                              

        --查询分配的shared_pool_size的大小     

            SELECT SUM(bytes)/1024/1024 FROM v$sgastat WHERE pool LIKE '%shar%';

           

                SUM(BYTES)/1024/1024

                --------------------

                                1216

                   

            SELECT * FROM v$sgainfo  WHERE name LIKE 'Shared%';

     

   

5.查看shared pool的分配大小,已使用空间,可用空间,已用空间的百分比

        column shared_pool_used format 9,999.99

        column shared_pool_size format 9,999.99

        column shared_pool_avail format 9,999.99

        column shared_pool_pct format 999.99

 

        SELECT SUM(a.bytes) / (1024 * 1024) shared_pool_used,

               MAX(b.value) / (1024 * 1024) shared_pool_size,

               (MAX(b.value) - SUM(a.bytes)) / (1024 * 1024) shared_pool_avail,

               (SUM(a.bytes) / MAX(b.value)) * 100 Shared_pool_per

        FROM   v$sgastat a, v$parameterb

        WHERE  a.name IN ('table definiti',

                          'dictionary cache',

                          'library cache',

                          'sql area',

                          'PL/SQL DIANA')

               AND b.name = 'shared_pool_size';

              

        SHARED_POOL_USEDSHARED_POOL_SIZE SHARED_POOL_AVAIL SHARED_POOL_PER

        ---------------- --------------------------------- ---------------

                  965.49         1,152.00            186.51       83.809699           

 

6.根据上述的各个情况的判断,检查v$shared_pool_advice来判断增加shared_pool_size

         SELECT shared_pool_size_for_estimate est_size,

                shared_pool_size_factorsize_factor,

                estd_lc_size,

                estd_lc_memory_objectsobj_cnt,

                estd_lc_time_saved_factorsav_factor

         FROM   v$shared_pool_advice;

   

         EST_SIZESIZE_FACTOR ESTD_LC_SIZE    OBJ_CNT SAV_FACTOR

        --------- ----------- ---------------------- ----------

              640       .5556          642      54947          1

              768       .6667          769      80736          1

              896       .7778          896     101860          1

             1024       .8889         1023     135536          1

             1152           1         1150     167927          1

             1280      1.1111         1277     200423          1

             1408      1.2222         1404     234144          1

             1536      1.3333         1535     257042          1

             1664      1.4444         1662     270800          1

             1792      1.5556         1789     282202          1

             1920      1.6667         1914     294138          1

             2048      1.7778         2040     306570          1

             2176      1.8889         2169     317104          1

             2304           2         2299     327659          1

       

十二、共享池调优工具

    1.几个重要的性能视图

        v$sgastat

        v$librarycache

        v$sql

        v$sqlarea

        v$sqltext

        v$db_object_cache

    2.几个重要参数

        shared_pool_size

        open_cursors

        session_cached_cursors

        cursor_space_for_time

        cursor_sharing

        shared_pool_reserved_size

   

    3.查询视图获得相关信息

        --查询执行次数小于5的SQL语句

            scott@ORCL> select sql_text from v$sqlarea               

              2  where executions  5 order by upper(sql_text);    

       

        --查询解析的次数

            scott@ORCL> select sql_text,parse_calls,executions from v$sqlarea order by parse_calls;  

 

        对于那些相同的SQL语句,但不存

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL Index Cardinality는 쿼리 성능에 어떤 영향을 미칩니 까?MySQL Index Cardinality는 쿼리 성능에 어떤 영향을 미칩니 까?Apr 14, 2025 am 12:18 AM

MySQL Index Cardinality는 쿼리 성능에 중대한 영향을 미칩니다. 1. 높은 카디널리티 인덱스는 데이터 범위를보다 효과적으로 좁히고 쿼리 효율성을 향상시킬 수 있습니다. 2. 낮은 카디널리티 인덱스는 전체 테이블 스캔으로 이어질 수 있으며 쿼리 성능을 줄일 수 있습니다. 3. 관절 지수에서는 쿼리를 최적화하기 위해 높은 카디널리티 시퀀스를 앞에 놓아야합니다.

MySQL : 신규 사용자를위한 리소스 및 튜토리얼MySQL : 신규 사용자를위한 리소스 및 튜토리얼Apr 14, 2025 am 12:16 AM

MySQL 학습 경로에는 기본 지식, 핵심 개념, 사용 예제 및 최적화 기술이 포함됩니다. 1) 테이블, 행, 열 및 SQL 쿼리와 같은 기본 개념을 이해합니다. 2) MySQL의 정의, 작업 원칙 및 장점을 배우십시오. 3) 인덱스 및 저장 절차와 같은 기본 CRUD 작업 및 고급 사용량을 마스터합니다. 4) 인덱스의 합리적 사용 및 최적화 쿼리와 같은 일반적인 오류 디버깅 및 성능 최적화 제안에 익숙합니다. 이 단계를 통해 MySQL의 사용 및 최적화를 완전히 파악할 수 있습니다.

실제 MySQL : 예 및 사용 사례실제 MySQL : 예 및 사용 사례Apr 14, 2025 am 12:15 AM

MySQL의 실제 응용 프로그램에는 기본 데이터베이스 설계 및 복잡한 쿼리 최적화가 포함됩니다. 1) 기본 사용 : 사용자 정보 삽입, 쿼리, 업데이트 및 삭제와 같은 사용자 데이터를 저장하고 관리하는 데 사용됩니다. 2) 고급 사용 : 전자 상거래 플랫폼의 주문 및 재고 관리와 같은 복잡한 비즈니스 로직을 처리합니다. 3) 성능 최적화 : 인덱스, 파티션 테이블 및 쿼리 캐시를 사용하여 합리적으로 성능을 향상시킵니다.

MySQL의 SQL 명령 : 실제 예제MySQL의 SQL 명령 : 실제 예제Apr 14, 2025 am 12:09 AM

MySQL의 SQL 명령은 DDL, DML, DQL 및 DCL과 같은 범주로 나눌 수 있으며 데이터베이스 및 테이블을 작성, 수정, 삭제, 삽입, 업데이트, 데이터 삭제 및 복잡한 쿼리 작업을 수행하는 데 사용됩니다. 1. 기본 사용에는 CreateTable 생성 테이블, InsertInto 삽입 데이터 및 쿼리 데이터 선택이 포함됩니다. 2. 고급 사용에는 테이블 조인, 하위 쿼리 및 데이터 집계에 대한 GroupBy 조인이 포함됩니다. 3. 구문 검사, 데이터 유형 변환 및 권한 관리를 통해 구문 오류, 데이터 유형 불일치 및 권한 문제와 같은 일반적인 오류를 디버깅 할 수 있습니다. 4. 성능 최적화 제안에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 트랜잭션을 사용하여 데이터 일관성을 보장하는 것이 포함됩니다.

InnoDB는 산 준수를 어떻게 처리합니까?InnoDB는 산 준수를 어떻게 처리합니까?Apr 14, 2025 am 12:03 AM

Innodb는 잠금 장치 및 MVCC를 통한 Undolog, 일관성 및 분리를 통해 원자력을 달성하고, Redolog를 통한 지속성을 달성합니다. 1) 원자력 : Undolog를 사용하여 원래 데이터를 기록하여 트랜잭션을 롤백 할 수 있는지 확인하십시오. 2) 일관성 : 행 수준 잠금 및 MVCC를 통한 데이터 일관성을 보장합니다. 3) 격리 : 다중 격리 수준을지지하고 반복적 인 방사선이 기본적으로 사용됩니다. 4) 지속성 : Redolog를 사용하여 수정을 기록하여 데이터가 오랫동안 저장되도록하십시오.

MySQL의 장소 : 데이터베이스 및 프로그래밍MySQL의 장소 : 데이터베이스 및 프로그래밍Apr 13, 2025 am 12:18 AM

데이터베이스 및 프로그래밍에서 MySQL의 위치는 매우 중요합니다. 다양한 응용 프로그램 시나리오에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) MySQL은 웹, 모바일 및 엔터프라이즈 레벨 시스템을 지원하는 효율적인 데이터 저장, 조직 및 검색 기능을 제공합니다. 2) 클라이언트 서버 아키텍처를 사용하고 여러 스토리지 엔진 및 인덱스 최적화를 지원합니다. 3) 기본 사용에는 테이블 작성 및 데이터 삽입이 포함되며 고급 사용에는 다중 테이블 조인 및 복잡한 쿼리가 포함됩니다. 4) SQL 구문 오류 및 성능 문제와 같은 자주 묻는 질문은 설명 명령 및 느린 쿼리 로그를 통해 디버깅 할 수 있습니다. 5) 성능 최적화 방법에는 인덱스의 합리적인 사용, 최적화 된 쿼리 및 캐시 사용이 포함됩니다. 모범 사례에는 거래 사용 및 준비된 체계가 포함됩니다

MySQL : 소기업에서 대기업에 이르기까지MySQL : 소기업에서 대기업에 이르기까지Apr 13, 2025 am 12:17 AM

MySQL은 소규모 및 대기업에 적합합니다. 1) 소기업은 고객 정보 저장과 같은 기본 데이터 관리에 MySQL을 사용할 수 있습니다. 2) 대기업은 MySQL을 사용하여 대규모 데이터 및 복잡한 비즈니스 로직을 처리하여 쿼리 성능 및 트랜잭션 처리를 최적화 할 수 있습니다.

Phantom은 무엇을 읽고, Innodb는 어떻게 그들을 막을 수 있습니까 (다음 키 잠금)?Phantom은 무엇을 읽고, Innodb는 어떻게 그들을 막을 수 있습니까 (다음 키 잠금)?Apr 13, 2025 am 12:16 AM

InnoDB는 팬텀 읽기를 차세대 점화 메커니즘을 통해 효과적으로 방지합니다. 1) Next-Keylocking은 Row Lock과 Gap Lock을 결합하여 레코드와 간격을 잠그기 위해 새로운 레코드가 삽입되지 않도록합니다. 2) 실제 응용 분야에서 쿼리를 최적화하고 격리 수준을 조정함으로써 잠금 경쟁을 줄이고 동시성 성능을 향상시킬 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기