Heim Datenbank MySQL-Tutorial 对于自适应游标共享的一点补充

对于自适应游标共享的一点补充

Jun 07, 2016 pm 03:23 PM
共享 um 游标

关于自适应游标共享请参加:http://blog.csdn.net/yidian815/article/details/17959907 对自适应游标共享的理解,本人认为难点在于对BIND_SENSITIVE 和BIND_AWARE的认识。再来复习一下: bind_sensitive:oracle认为该语句可能会因为绑定变量的不同而需要采取

关于自适应游标共享请参加:http://blog.csdn.net/yidian815/article/details/17959907

对自适应游标共享的理解,本人认为难点在于对BIND_SENSITIVE 和BIND_AWARE的认识。再来复习一下:

bind_sensitive:oracle认为该语句可能会因为绑定变量的不同而需要采取不同的执行计划,因此需要监控该语句的执行并依据执行结果做出判断。

bind_aware:oracle通过监视已经认定该语句需要针对不同的绑定变量取值采取不同的执行计划。

现在就好出现如下的问题:

oracle认定什么样式的sql语句是bind_sensitve?

对于bind_aware的语句,oracle是如何根据不同的变量取值来选择执行计划的?

在回答这些问题之前,先来看一下测试环境

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

SQL> desc t2;

 名称                            是否为空? 类型

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

 ID                             NUMBER

 RTYPE                              VARCHAR2(20)

 SEL                                NUMBER

 

SQL> select column_name,histogram from dba_tab_cols where table_name='T2' AND OWNER='EASY1';

 

COLUMN_NAME            HISTOGRAM

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

ID                 NONE

RTYPE                  FREQUENCY

SEL                NONE

 

 

SQL> select rtype,count(1),min(sel),max(sel) from t2 group by rtype order by 3;

 

RTYPE              COUNT(1)   MIN(SEL)   MAX(SEL)

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

1                 1 7.6295E-06 7.6295E-06

2                 2 .000015259 .000015259

3                 4 .000030518 .000030518

4                 8 .000061036 .000061036

5                16 .000122072 .000122072

6                32 .000244144 .000244144

7                64 .000488289 .000488289

8               128 .000976577 .000976577

9               256 .001953155 .001953155

10              512  .00390631  .00390631

11             1024 .007812619 .007812619

 

RTYPE              COUNT(1)   MIN(SEL)   MAX(SEL)

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

12             2048 .015625238 .015625238

13             4096 .031250477 .031250477

14             8192 .062500954 .062500954

15            16384 .125001907 .125001907

16            32768 .250003815 .250003815

17            65536  .50000763  .50000763

Nach dem Login kopieren
sel代表rype在整张表中的选择性。

首先我们猜测第一个问题的答案。

因为bind_sensitive是针对绑定变量的不同取值而论的,因此我们认为只有具有绑定变量的语句才可能是bind_sensitive的。

1

2

3

4

5

6

7

8

9

10

11

SQL> select sum(id) from t2 where rtype=16;

 

   SUM(ID)

----------

1610596352

 

SQL> select sum(id) from t2 where rtype=1;

 

   SUM(ID)

----------

     1

Nach dem Login kopieren

1

2

3

4

5

6

7

8

SQL> l

  1* select sql_text,is_bind_sensitive,is_bind_aware from v$sql where sql_text like 'select sum(id) from t2%'

SQL> /

 

SQL_TEXT                             I I

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

select sum(id) from t2 where rtype=1                 N N

select sum(id) from t2 where rtype=16                N N

Nach dem Login kopieren
是不是具有绑定变量就一定会是bind_sensitive?

1

2

3

4

5

6

7

8

9

10

SQL> var v varchar2(100)

SQL> select sum(id) from t2 where rtype=:v;

 

   SUM(ID)

----------

 

SQL> select sum(id) from t2 where id=:v;

 

   SUM(ID)

----------

Nach dem Login kopieren

1

2

3

4

5

6

7

8

9

10

SQL> l

  1* select sql_text,is_bind_sensitive,is_bind_aware from v$sql where sql_text like 'select sum(id) from t2%'

SQL> /

 

SQL_TEXT                             I I

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

select sum(id) from t2 where rtype=1                 N N

select sum(id) from t2 where id=:v               N N

select sum(id) from t2 where rtype=:v                Y N

select sum(id) from t2 where rtype=16                N N

Nach dem Login kopieren
看来不光需要具有绑定变量,还需要在绑定变量所在列上具有直方图统计信息才可以。当然这是在等值操作的情况下,在其他情况下那?在这里我们不做分析,至少在目前的情况下,oracle对bind_sensitive具有如下限制(官方文档):

The optimizer has peeked at the bind values to generate selectivity estimates.

A histogram exists on the column containing the bind value.

  • 下面一段文字来自网络,尽快参考

    Q: What triggers a cursor to be marked "bind sensitive"?

    A: Our goal is to consider many types of predicates where the selectivity can change when the bind value changes. In this first version of the feature, we only handle equality predicates where a histogram exists on the column and range predicates (with or without histogram). We do not currently consider LIKE predicates, but it is on the top of our list for future work.

    下面我们来看看bind_aware的语句是如何工作的,为了简化操作,我们直接使用BIND_AWARE hint。关于该hint的使用,有如下解释:

    From 11.1.0.7 onward it is possible to skip the monitoring that is required to detect bind-sensitive queries by using the BIND_AWARE hint. In the following example, the presence of the hint tells the optimizer that we believe the query is bind-sensitive, so it should use bind-aware cursor sharing from the first execution.

    1

    SELECT /*+ BIND_AWARE */ MAX(id) FROM acs_test_tab WHERE record_type = :l_record_type;

    Nach dem Login kopieren

    The hint will only work if the query uses bind variables in WHERE clause predicates referencing columns with histograms.

    There is also a NO_BIND_AWARE hint that tells the optimizer to ignore bind-sensitive queries, effectively hiding the query from the adaptive cursor sharing functionality.

    Bind-aware cursor sharing has a small overhead associated with it, which is why Oracle use the "adaptive" approach to identifying queries that would benefit from bind-aware cursor sharing. Adding the hint to queries that will not benefit from it is a waste.

    在进一步实验之前,创建表t1

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    SQL> create table t1 as select * from t2 where 1 =2;

     

    表已创建。

     

    SQL> alter table t1 modify rtype number;

     

    表已更改。

     

    SQL> insert into t1 select * from t2;

     

    已创建 131071 行。

     

    SQL> commit;

     

    提交完成。

     

    SQL> create index i1 on t1(rtype);

     

    索引已创建。

    Nach dem Login kopieren

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    SQL> exec dbms_stats.gather_table_stats(user,'t1',cascade=>true,estimate_percent=>null,method_opt=>'for all columns size auto,for columns rtype size 40');

     

    PL/SQL 过程已成功完成。

     

    SQL> select table_name,column_name,endpoint_number,to_char(endpoint_value),endpoint_actual_value from user_histograms where table_name='T1';

     

    TABLE_NAME COLUMN_NAME      ENDPOINT_NUMBER TO_CHAR(ENDPOINT_VALUE)          ENDPOINT_ACTUAL_VALUE

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

    T1     RTYPE                  1 1

    T1     RTYPE                  3 2

    T1     RTYPE                  7 3

    T1     RTYPE                 15 4

    T1     RTYPE                 31 5

    T1     RTYPE                 63 6

    T1     RTYPE                127 7

    T1     RTYPE                255 8

    T1     RTYPE                511 9

    T1     RTYPE               1023 10

    T1     RTYPE               2047 11

     

    TABLE_NAME COLUMN_NAME      ENDPOINT_NUMBER TO_CHAR(ENDPOINT_VALUE)          ENDPOINT_ACTUAL_VALUE

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

    T1     RTYPE               4095 12

    T1     RTYPE               8191 13

    T1     RTYPE              16383 14

    T1     RTYPE             131071 17

    T1     ID                     0 1

    T1     SEL                    0 .00000762951094834821

    T1     ID                     1 131071

    T1     SEL                    1 .87501335164416

     

    已选择19行。

    Nach dem Login kopieren

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    SQL> select rtype,count(1),min(sel),max(sel) from t1 group by rtype order by 3;

     

         RTYPE   COUNT(1)   MIN(SEL)   MAX(SEL)

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

         1      1 7.6295E-06 7.6295E-06

         2      2 .000015259 .000015259

         3      4 .000030518 .000030518

         4      8 .000061036 .000061036

         5     16 .000122072 .000122072

         6     32 .000244144 .000244144

         7     64 .000488289 .000488289

         8    128 .000976577 .000976577

         9    256 .001953155 .001953155

        10    512  .00390631  .00390631

        11   1024 .007812619 .007812619

     

         RTYPE   COUNT(1)   MIN(SEL)   MAX(SEL)

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

        12   2048 .015625238 .015625238

        13   4096 .031250477 .031250477

        14   8192 .062500954 .062500954

        17     114688 .875013352 .875013352

    Nach dem Login kopieren
    对bind_aware的实验过程如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    138

    139

    140

    141

    142

    143

    144

    145

    146

    147

    148

    149

    150

    151

    152

    153

    154

    155

    156

    157

    158

    159

    160

    161

    162

    163

    164

    165

    166

    167

    168

    169

    170

    171

    172

    173

    174

    175

    176

    177

    178

    179

    180

    181

    182

    183

    184

    185

    186

    187

    188

    189

    190

    191

    192

    193

    194

    195

    196

    197

    198

    199

    200

    201

    202

    203

    204

    205

    206

    207

    208

    209

    210

    211

    212

    213

    214

    215

    216

    217

    218

    219

    220

    221

    222

    223

    224

    225

    226

    227

    228

    229

    230

    231

    232

    233

    234

    235

    236

    237

    238

    239

    240

    241

    242

    243

    244

    245

    246

    247

    248

    249

    250

    251

    SQL> alter system flush shared_pool;

     

    系统已更改。

     

    SQL> var vr number;

    SQL> exec :vr := 1

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

         1

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y    --由于使用了bind_aware HINT

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008 --根据直方图计算出rtype=1的选择性

     

    SQL> exec :vr := 2

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

         5

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N  --逐步淘汰出内存

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017    --由于rtype=2的选择性不再0.00007~0.00008之间,所以生成新的子游标,由于新游标和旧游标的执行计划相同,所以进行合并,子游标0被设置为非共享,逐步淘汰出内存

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    SQL> exec :vr := 1

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

         1

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y Y   --使用新的子游标,不再使用0号子游标

     

    SQL> @sho_sel

    SP2-0310: 无法打开文件 "sho_sel.sql"

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    SQL> exec :vr := 3

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

        22

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        2 =VR                       0 0.000007   0.000034

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    SQL> exec :vr := 1

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

         1

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y Y

     

    SQL> exec :vr := 8

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

         24512

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        3 =VR                       0 0.000007   0.001074

    00000000DD40C0E0 2679189014 082txyqgv2bhq        2 =VR                       0 0.000007   0.000034

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    SQL> exec :vr := 14

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

     100659200

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        4 =VR                       0 0.000007   0.068751

    00000000DD40C0E0 2679189014 082txyqgv2bhq        3 =VR                       0 0.000007   0.001074

    00000000DD40C0E0 2679189014 082txyqgv2bhq        2 =VR                       0 0.000007   0.000034

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    SQL> exec :vr := 15

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

     

    已选择6行。

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        5 =VR                       0 0.000003   0.068751 --由于15不存在,所以选择性向下扩充

    00000000DD40C0E0 2679189014 082txyqgv2bhq        4 =VR                       0 0.000007   0.068751

    00000000DD40C0E0 2679189014 082txyqgv2bhq        3 =VR                       0 0.000007   0.001074

    00000000DD40C0E0 2679189014 082txyqgv2bhq        2 =VR                       0 0.000007   0.000034

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    已选择6行。

     

    SQL> exec :vr := 17

     

    PL/SQL 过程已成功完成。

     

    SQL> select /*+ bind_aware */ sum(id) from t1 where rtype = :vr;

     

       SUM(ID)

    ----------

    8455659520

     

    SQL> @show_sql

     

    SQL_TEXT                             EXECUTIONS I I I

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

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        2 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y N

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

    select /*+ bind_aware */ sum(id) from t1 where rtype = :vr        1 Y Y Y

     

    已选择7行。

     

    SQL> @show_sel

     

    ADDRESS      HASH_VALUE SQL_ID    CHILD_NUMBER PREDICATE                  RANGE_ID LOW        HIGH

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

    00000000DD40C0E0 2679189014 082txyqgv2bhq        6 =VR                       0 0.787503   0.962503 --新的子游标的执行计划于旧子游标不同,所以均保留

    00000000DD40C0E0 2679189014 082txyqgv2bhq        5 =VR                       0 0.000003   0.068751

    00000000DD40C0E0 2679189014 082txyqgv2bhq        4 =VR                       0 0.000007   0.068751

    00000000DD40C0E0 2679189014 082txyqgv2bhq        3 =VR                       0 0.000007   0.001074

    00000000DD40C0E0 2679189014 082txyqgv2bhq        2 =VR                       0 0.000007   0.000034

    00000000DD40C0E0 2679189014 082txyqgv2bhq        1 =VR                       0 0.000007   0.000017

    00000000DD40C0E0 2679189014 082txyqgv2bhq        0 =VR                       0 0.000007   0.000008

     

    已选择7行。

    Nach dem Login kopieren
    由此可见,计算绑定变量的谓词选择性在bind_aware中扮演者重要角色
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So teilen Sie WallpaperEngine mit Freunden So teilen Sie WallpaperEngine mit Freunden Mar 18, 2024 pm 10:00 PM

Benutzer können die Hintergrundbilder, die sie erhalten, mit Freunden teilen, wenn sie WallpaperEngine verwenden. Viele Benutzer wissen nicht, wie sie WallpaperEngine mit Freunden teilen können. Sie können ihre Lieblingshintergrundbilder lokal speichern und sie dann über soziale Software mit Freunden teilen. So teilen Sie WallpaperEngine mit Freunden Antwort: Speichern Sie es lokal und teilen Sie es mit Freunden. 1. Es wird empfohlen, dass Sie Ihre Lieblingshintergründe lokal speichern und sie dann über soziale Software mit Freunden teilen. 2. Sie können es auch über einen Ordner auf den Computer hochladen und dann über die Kreativ-Workshop-Funktion auf dem Computer auf „Teilen“ klicken. 3. Verwenden Sie Wallpaperengine auf dem Computer, öffnen Sie die Optionsleiste der Kreativwerkstatt und suchen Sie

So teilen Sie den Bildschirm auf WeChat Enterprise So teilen Sie den Bildschirm auf WeChat Enterprise Feb 28, 2024 pm 12:43 PM

Immer mehr Unternehmen entscheiden sich für den exklusiven Unternehmens-WeChat, der nicht nur die Kommunikation zwischen Unternehmen und Kunden und Partnern erleichtert, sondern auch die Arbeitseffizienz erheblich verbessert. Enterprise WeChat verfügt über umfangreiche Funktionen, unter denen die Bildschirmfreigabefunktion sehr beliebt ist. Während des Meetings können die Teilnehmer durch die gemeinsame Nutzung des Bildschirms Inhalte intuitiver darstellen und effizienter zusammenarbeiten. Wie können Sie Ihren Bildschirm in WeChat Enterprise effizient teilen? Für Benutzer, die es noch nicht wissen, wird Ihnen dieses Tutorial hoffentlich helfen! Wie teile ich den Bildschirm auf WeChat Enterprise? 1. Im blauen Bereich auf der linken Seite der Hauptoberfläche von Enterprise WeChat sehen Sie eine Liste der Funktionen. Nach dem Klicken zum Betreten werden drei Konferenzmodi angezeigt.

Quick Share-Funktion funktioniert auf Samsung-Telefonen nicht – Fix Quick Share-Funktion funktioniert auf Samsung-Telefonen nicht – Fix Sep 19, 2023 pm 04:25 PM

Quick Share kann Samsung-Benutzern viel Zeit beim Übertragen von Dateien zwischen Geräten sparen. Nutzer von Samsung Galaxy haben sich jedoch über Probleme mit der Quick Share-Funktion auf ihren Handys beschwert. Typischerweise sind Sichtbarkeitsprobleme bei der Schnellfreigabe die Ursache für dieses Problem. Dies ist also die einzige Anleitung, die Sie zur Fehlerbehebung bei der Quick Share-Funktion auf Ihrem Galaxy-Gerät benötigen. Fix 1 – Quick Share-Sichtbarkeitseinstellungen ändern Schalten Sie die Quick Share-Sichtbarkeitseinstellung auf Ihrem Telefon um. Möglicherweise sind für Quick Share die falschen Einstellungen festgelegt, was dieses Problem verursacht. Schritt 1 – Wischen Sie zunächst einmal nach oben, um die App-Schublade zu öffnen. Schritt 2 – Öffnen Sie dort die Einstellungen. Schritt 3 – Gehen Sie zur Seite „Einstellungen“ und öffnen Sie die Registerkarte „Verbundene Geräte“. Schritt 4 – Aktivieren Sie die Funktion „Quick Share“. Schritt 5

Anleitung zur Ordnerfreigabe für Windows 11: Teilen Sie Ihre Dateien und Daten ganz einfach Anleitung zur Ordnerfreigabe für Windows 11: Teilen Sie Ihre Dateien und Daten ganz einfach Mar 13, 2024 am 11:49 AM

Im täglichen Leben und bei der Arbeit müssen wir häufig Dateien und Ordner zwischen verschiedenen Geräten teilen. Das Windows 11-System bietet praktische integrierte Ordnerfreigabefunktionen, die es uns ermöglichen, die benötigten Inhalte einfach und sicher mit anderen im selben Netzwerk zu teilen und gleichzeitig die Privatsphäre persönlicher Dateien zu schützen. Diese Funktion macht die Dateifreigabe einfach und effizient, ohne dass Sie befürchten müssen, dass private Informationen verloren gehen. Durch die Ordnerfreigabefunktion des Windows 11-Systems können wir bequemer zusammenarbeiten, kommunizieren und zusammenarbeiten und so die Arbeitseffizienz und den Lebenskomfort verbessern. Um einen freigegebenen Ordner erfolgreich zu konfigurieren, müssen wir zunächst die folgenden Bedingungen erfüllen: Alle Geräte (die an der Freigabe teilnehmen) sind mit demselben Netzwerk verbunden. Aktivieren Sie die Netzwerkerkennung und konfigurieren Sie die Freigabe. Kennen Sie das Zielgerät

So verwenden Sie NameDrop auf dem iPhone iOS 17 So verwenden Sie NameDrop auf dem iPhone iOS 17 Sep 22, 2023 pm 11:41 PM

Mit der Einführung der neuen Mobiltelefone der Apple iPhone15-Serie und der Einführung des neuesten mobilen Betriebssystems iOS17 wurde eine Fülle neuer Funktionen, Anpassungen und Verbesserungen auf Apple-Geräte gebracht. Benutzer fragen sich möglicherweise, wie sie die neue NameDrop-Funktion auf iPhone und iOS17 verwenden können. Dieser Leitfaden bietet einen kurzen Überblick darüber, wie Sie Ihre Kontaktinformationen schnell und effizient mit dem neuen NameDrop-System teilen, das auf iOS17 verfügbar ist. NameDrop ist eine Funktion, die es iPhone-Benutzern ermöglicht, ihre Kontaktinformationen schnell mit anderen zu teilen. Es ist ein praktisches Tool für gesellschaftliche Veranstaltungen, Geschäftstreffen oder gesellschaftliche Zusammenkünfte, bei denen Sie Kontaktdaten mit neuen Freunden austauschen müssen. Es ist jedoch wichtig zu beachten, dass NameDrop nur zum Versenden neuer Kontakte funktioniert

Der freigegebene Drucker kann keine Verbindung zum Drucker herstellen Der freigegebene Drucker kann keine Verbindung zum Drucker herstellen Feb 22, 2024 pm 01:09 PM

Mit der Entwicklung des digitalen Zeitalters sind gemeinsam genutzte Drucker zu einem unverzichtbaren Bestandteil der modernen Büroumgebung geworden. Manchmal kann es jedoch vorkommen, dass der freigegebene Drucker nicht mit dem Drucker verbunden werden kann, was nicht nur die Arbeitseffizienz beeinträchtigt, sondern auch eine Reihe von Problemen verursacht. Ziel dieses Artikels ist es, die Gründe und Lösungen dafür zu untersuchen, warum ein freigegebener Drucker keine Verbindung zum Drucker herstellen kann. Es gibt viele Gründe, warum ein freigegebener Drucker keine Verbindung zum Drucker herstellen kann. Der häufigste Grund sind Netzwerkprobleme. Wenn die Netzwerkverbindung zwischen dem freigegebenen Drucker und dem Drucker instabil oder unterbrochen ist, ist ein normaler Betrieb nicht möglich.

So schützen Sie die Privatsphäre von Kontaktfotos und Postern auf dem iPhone So schützen Sie die Privatsphäre von Kontaktfotos und Postern auf dem iPhone Sep 18, 2023 am 10:49 AM

Wer kann Ihre Kontaktfotos und Poster auf dem iPhone ansehen? Apple bietet Optionen zum Personalisieren, wie Sie auf dem iPhone einer anderen Person angezeigt werden, wenn diese anruft oder eine Nachricht sendet. Zu den Optionen gehören Memoji, einfacher Text oder ein benutzerdefiniertes Foto mit Effekten als Kontaktfoto und Anzeigebild. Sie können diese Auswahl jederzeit ändern und zwischen den Profilen auf der Kontaktkarte wechseln. Darüber hinaus gibt Ihnen Apple die Möglichkeit zu steuern, wer auf iOS17 Fotos ansehen und darauf zugreifen oder Bilder Ihrer Wahl anzeigen kann. Sie können diese mit Personen teilen, die in Ihrer Kontaktliste gespeichert sind, oder Sie können Ihr iPhone so einstellen, dass es Sie jedes Mal benachrichtigt, wenn Sie mit einem Kontakt interagieren. Wenn Sie möchten, können Sie den Namen auch dauerhaft deaktivieren

Wo werden die Berechtigungen freigegebener Ordner festgelegt? Tipps zum Festlegen der Berechtigungen freigegebener Ordner in Win10 auf schreibgeschützt und nicht änderbar Wo werden die Berechtigungen freigegebener Ordner festgelegt? Tipps zum Festlegen der Berechtigungen freigegebener Ordner in Win10 auf schreibgeschützt und nicht änderbar Feb 29, 2024 pm 03:43 PM

Wie lege ich in Win10 schreibgeschützte Berechtigungen für freigegebene Ordner fest? Nachdem der Host den Ordner freigegeben hat, möchten einige Benutzer nur, dass andere auf die Dateien zugreifen, sie lesen und anzeigen, aber nicht, dass andere die Dateien auf dem Host ändern. In diesem Artikel erfahren Sie, wie Sie die Berechtigungen eines freigegebenen Ordners auf schreibgeschützt und nicht änderbar festlegen. 1. Geben Sie den Ordner zunächst gemäß dem normalen Vorgang frei. Klicken Sie auf der Hostseite mit der rechten Maustaste auf den Ordner, der freigegeben werden soll, und wählen Sie: Eigenschaften-Freigabe-Erweiterte Freigabe-Prüfung Diesen Ordner freigeben 2. Klicken Sie dann auf Berechtigungsoption unten. Fügen Sie standardmäßig ein Jeder-Konto hinzu. 3. Überprüfen Sie unten nur die Leseberechtigung und klicken Sie dann auf OK. 4. Suchen Sie den Ordner „Eigenschaften – Sicherheit“ und fügen Sie ein „Ever“-Konto hinzu

See all articles