• 8.2.2 Optimizing DML Statements 优化DML 语句:


    8.2.2 Optimizing DML Statements 优化DML 语句:

    8.2.2.1 Speed of INSERT Statements
    8.2.2.2 Speed of UPDATE Statements
    8.2.2.3 Speed of DELETE Statements

    这个章节显示 如何加速DML操作,INSERT,UPDATE和DELETE。

    传统的OLTP 应用和现代的web应用通常是一些小的DML操作,

    并发值至关重要的。数据分析和报表应用典型的运行DML操作一次影响很多记录,

    主要的考虑是I/O 写大量的数据和保持索引的更新。对于插入和更新大量的数据

    ( 比如ETL, for “extract-transform-load”),

    有时候你使用其他的SQL语句或者外部命令,模拟INSERT,UPDATE和DELETE 语句。

    8.2.2.1 Speed of INSERT Statements

    要优化插入速度,将小的操作合成一个小的大操作。在理想状况下,

    你再一个单独的连接上, 一次发送很多数据, delay所有的索引更新和一致性检查直到结束。

    插入一行需要的时间是有下面的因素决定, number 表示相应的比例:

    Connecting: (3)

    Sending query to server: (2)

    Parsing query: (2)

    Inserting row: (1 × size of row)

    Inserting indexes: (1 × number of indexes)

    Closing: (1)

    这个不考虑打开表的初始开销, 为每一个并发查询运行一次。

    表的大小降低了索引的插入通过log N, 假设B树索引:

    你可以使用以下的方法来加快插入:

    如果你在同一时间插入多行从同一个客户端,使用INSERT 语句带多个VALUES 列表

    来一次插入多行。

    这个认为是快速的(快很多倍在有些情况下) 相比使用单独的行插入语句。

    如果你增加数据到一个非空的表,你可以调优bulk_insert_buffer_size 变量来让数据插入变的更快。

    当从文本文件加载表, 使用LOAD DATA 文件, 这个通常是20倍速度的相比使用INSERT 语句。

    利用列有默认值的事实,只有当插入的值于默认的值不同的时候才插入值,

    这个降低了SQL的解析,来改善性能。

  • 相关阅读:
    基于Centos 搭建Jenkins环境
    基于 CentOS 7 搭建 GitLab
    SpringBoot2.x集成WebSocket
    使用jackson序列化json时遇到的坑
    红米3 Flyme5.1.9.5插桩适配长期不定时更新
    教你一招:使用最快速的方式激活windows10专业版
    ubuntu/mint 安装google的拼音输入法
    Ubuntu 14.04.4官方默认更新源sources.list
    Ubuntu(基于Ubuntu)中常用的apt和dpkt命令
    Linux--目录结构解释(转)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351275.html
Copyright © 2020-2023  润新知