精华内容
下载资源
问答
  • 数仓算好的数据需要导出到MySQL,但现有的操作流程导出千万级的数据耗时近2小时,2小时的导出速度无法忍耐,且失败成本较高,故急需优化提速。 Hive表为orc格式,按月分区,数据每月通过spark任务执行,并且insert ...

    背景

    数仓算好的数据需要导出到MySQL,但现有的操作流程导出千万级的数据耗时近2小时,2小时的导出速度无法忍耐,且失败成本较高,故急需优化提速。

    • Hive表为orc格式,按月分区,数据每月通过spark任务执行,并且insert 命令后会带上distribute by语句,保证每个月分区内只有一个文件
    • MySQL环境为开发环境,硬件配置极低

    思路

    正常我们执行sqoop命令导出数据时,都有固有的模板,类似:

    sqoop export \
      --connect "${conn_info}" \
      --username ${username} \
      --password ${password} \
      --table ${target_table_name} \
      --hcatalog-database ${from_database_name} \
      --hcatalog-table ${from_table_name} \
      --hcatalog-partition-keys ${partition_key} \
      --hcatalog-partition-values "${partition_value}" \
      --columns "xxx,xxx,xxx,xxx,xxx" \
      --mapreduce-job-name ${your_mr_job_name} \
      -m 1
    

    1.首先想到的方式发增大-m参数的值,想通过增加并行度的方式来提升导出速度,随后我将值改到8执行,但在yarn界面上始终看到只有一个map在跑,也就是说-m参数配置没生效,后来测试了配置为4和2,都只有一个map在运行,导致速度很慢。

    2.后来查看了这张hive表的底层存储路径,才发现了问题所在。由于每月跑任务用了distribute by语句,导致最终每个分区只有一个文件,所以当我无脑增大-m的配置时是不会生效的。

    实施

    想明白以后,我通过spark重新insert overwrite了这张表,并且去掉了distribute by语句,使每个分区分成默认数量个文件,然后重新提交了sqoop命令,并且将-m直接成了20,后来在yarn界面中查看该任务时,发现-m的配置生效了,可以看到20个map任务并行执行。

    效果

    速度从最开始的120min提速到15min,提速近87.5%。

    总结

    经验证,sqoop -m值越大,导出越快,同时占用资源越多,根据自身需求取舍就好。

    展开全文
  • mysql提速skip-name-resolve

    2019-11-07 11:25:32
    tuduoa访问速度龟速 越来越...最终添加skip-name-resolve 解决这个让人头大的问题了 ,配置记录如下 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links i...

    tuduoa访问速度龟速 越来越慢  部分链接需要一分钟

    测试数据库打开需要5s+ 所以库都是

    最终添加skip-name-resolve 解决这个让人头大的问题了  ,配置记录如下

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    general_log=1
    log_output=TABLE
    #bind-address=10.2.5.237
    bind-address=0.0.0.0
    #skip-grant-tables
    #general_log=1
    #general_log_file='/data/mysql/general_log.CSV'
    skip-name-resolve #Don’t resolve hostnames
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    

    此机器是换过多次机房  之前使用的内网dns已经不能解析

    注:

    使用此方法跳过之后,授权的域名会无效

    参考:

    https://blog.csdn.net/qq_33468857/article/details/82228189

     

    展开全文
  • 核心概括(下面都是抄的,这句是我总结的):...如果未及时刷盘就挂掉了,数据是依赖redolog恢复的,也就是说redolog是起到数据可靠的关键角色,innodb_flush_log_at_trx_commit配置为1可保证数据可靠。 写缓存(.

    核心概括(下面都是转载的,概括是我总结的):

    1. 执行写操作时,如果数据在Buffer Pool中则直接更新内存中的数据,如果不在Buffer Pool中则写入Change Buffer,目的是避免磁盘随机读。
    2. 将对页的操作(并不是真实数据)写入redolog,将同步随机写改为异步随机写来提升性能。
    3. Change Buffer写入是只写内存,定时持久化,所以它并不是完全可靠的。如果未及时刷盘挂掉了,数据依赖redolog恢复,也就是说redolog是起到数据可靠的关键角色,innodb_flush_log_at_trx_commit 和 sync_binlog 配置为1可保证数据可靠。
    4. 读取数据时,如果在内存中则数据是最新的,直接返回;如果不在内存中,则从磁盘中读取,此时磁盘中有可能是脏页,和 change buffer 做merge操作后,更新成最新的数据。

     

    写缓存(Change Buffer) 是一种特殊的数据结构,用于在对数据变更时,如果数据所在的数据页没有在 buffer pool 中的话,在不影响数据一致性的前提下,InnoDB 引擎会将对数据的操作缓存在 Change Buffer 中,这样就省去了从磁盘中读入这个数据页。

    将数据页从磁盘读入内存中涉及随机 IO 访问,这也是数据库里面成本最高的操作之一,而利用写缓存(Change Buffer)可以减少 IO 操作,从而提升数据库性能。

    关于 MySQL 写缓存(Change Buffer),我们先来看看 InnoDB 的技术架构图:

    InnoDB 架构图

    Change Buffer 是 Buffer Pool 中的一部分,虽然 Change Buffer 名字叫 Buffer ,但是它也是可以持久化的,在右边的 System Tablespace 中可以看到持久化 Change Buffer 的空间。触发写缓存(Change Buffer)持久化操作有以下几种情况:

    • 1、数据库空闲时,后台有线程定时持久化
    • 2、数据库缓冲池不够用时
    • 3、数据库正常关闭时
    • 4、redo log 写满时

    再单独看看 Change Buffer 的架构图,如下所示:
    Change Buffer 的架构图

    图中详细的描述了 Change Buffer 的功能,Change Buffer 中的数据最终还是会刷回到数据所在的原始数据页中,Change Buffer 数据应用到原始数据页,得到新的数据页的过程称之为 merge。merge 过程中只会将 Change Buffer 中与原始数据页有关的数据应用到原始数据页,以下三种情况会发生 merge 操作:

    • 1、原始数据页加载到 Buffer Pool 时。
    • 2、系统后台定时触发 merge 操作。
    • 3、MySQL 数据库正常关闭时。

    Change Buffer 的相关设置

    上面就是写缓存(Change Buffer)的相关知识,写缓存(Change Buffer)我们也是可以使用命令参数来控制,MySQL 数据库提供了两个对写缓存(Change Buffer)的参数。
    Change Buffer 参数

    1、innodb_change_buffer_max_size

    innodb_change_buffer_max_size 表示 Change Buffer 最大大小占 Buffer Pool 的百分比,默认为 25%。最大可以设置为 50%。

    2、innodb_change_buffering

    innodb_change_buffering 参数用来控制对哪些操作启用 Change Buffer 功能,默认是:all。innodb_change_buffering 参数有以下几种选择:

    --all:      默认值。开启buffer inserts、delete-marking operations、purges
    --none: 不开启change buffer
    --inserts:  只是开启buffer insert操作
    --deletes:  只是开delete-marking操作
    --changes:  开启buffer insert操作和delete-marking操作
    --purges:   对只是在后台执行的物理删除操作开启buffer功能
    

    对上面写缓存(Change Buffer)如果你还是云里雾里的话,那么我们就用一个案例来说明一下 Change Buffer ,首先我们向数据库中插入两条数据:

    mysql> insert into t(id,k) values(id1,k1),(id2,k2);
    

    结合下面这张图来分析这两条插入语句。

    图片来源极客时间

    假设当前是 K索引树的状态,K1 所在的数据页 page1 在 Buffer Pool 中,k2 所在的数据页不在 Buffer Pool 中,来看看这两条语句的执行流程:

    1、对于 k1 这条数据,Page 1 在内存中,所以直接更新内存,不会使用到 Change Buffer;

    2、k2 对应的数据页 Page 2 没有在内存中,就在内存的 change buffer 区域,记录下“我要往 Page 2 插入一行”这个信息,这个地方及其关键,并没有从磁盘中将 page2 加载到内存。

    3、将上述两个动作记入 redo log 中(图中 3 和 4)。

    4、后台线程会定时将 page1 和 Change Buffer 中的数据持久化

    主要地方在于步骤二,这就是写缓存(Change Buffer)提高性能的地方,虽然 page2 并没有在内存中,但是并没有妨碍我们往数据库 page2 中插入数据,这就是写缓存(Change Buffer)的巧妙之处,也是写缓存(Change Buffer)提高 MySQL
    的地方。

    Change Buffer 适用场景

    Change Buffer 并不是适用于所有场景,以下两种情况不适合开启 Change Buffer :

    • 1、数据库都是唯一索引

    如果数据库都是唯一索引,那么在每次操作的时候都需要判断索引是否有冲突,势必要将数据加载到缓存中对比,因此也用不到 Change Buffer。

    • 2、写入一个数据后,会立刻读取它

    写入一个数据后,会立刻读取它,那么即使满足了条件,将更新先记录在 change buffer,但之后由于马上要访问这个数据页,会立即触发 merge 过程。这样随机访问 IO 的次数不会减少,反而增加了 change buffer 的维护代价。所以,对于这种业务模式来说,change buffer 反而起到了副作用。

    以下几种情况开启 Change Buffer,会使得 MySQL 数据库明显提升

    • 1、数据库大部分是非唯一索引
    • 2、业务是写多读少
    • 3、写入数据之后并不会立即读取它

    总体来说 InnoDB 的写缓存(Change Buffer)应用得当,会极大提高 MySQL 数据库的性能,使用不恰当的话,可能会适得其反。

    以上就是今天分享的内容,希望对您的学习或者工作有所帮助,如果您觉得文章不错,欢迎点个赞和转发,谢谢。

    展开全文
  • 1.先使用阿里云配置Docker下载提速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://zj8dk6mi.mirror.aliyuncs.com"] } EOF sudo systemctl daemon...

    1.先使用阿里云配置Docker下载提速

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://zj8dk6mi.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    2.下载mysql镜像,可选择版本(此处选择5.7)

    sudo docker pull mysql:5.7

    3.配置mysql

    docker run -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata.mysql/data:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7

    4.-----生成一串长id,说明mysql容器启动成功了

    展开全文
  • 页面静态化的技术实现有两种方式 使用PHP自己的缓存机制  先说明一下OB缓存的机制. ...① 配置php.ini 文件 output_buffering = 4096 ② 直接在程序中 ob_start(); 说明: 在php5.2这个版本 在php.in...
  • 如果数据库中的数据已经很多(几百万条), 那么可以 加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M bulk_insert_buffer_size=100M 第二种mysql插入提速方法:  改写所有 insert...
  • 当mysql大批量插入数据的时候就会变的非常慢, mysql提高insert into 插入速度的方法有三种:第一种插入提速方法:如果数据库中的数据已经很多(几百万条), 那么可以 加大mysql配置中的 bulk_insert_buffer_size,这个...
  • 如果数据库中的数据已经很多(几百万条),那么可以加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M bulk_insert_buffer_size=100M 第二种mysql插入提速方法: 改写所有 insert into 语句为...
  • 在CentOS 7 上搭建LAMP

    2016-04-20 16:12:46
    要求:httpd的动态和静态资源分为两台主机提供,mysql也用单独一台主机。httpd服务提供虚拟主机,一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress。...准备工作:三台主机,配置好yu...
  •  (1)Web/Conf目录和Public/Config目录没写入权限,将导致系统配置无法使用,这将系统无法安装和使用;  (2)Public/Uploads目录没有写入权限,将导致系统相关附件上传功能不能使用;  (3)伪静态设置详情见:...
  • 核心技术TP6+Mysql+Vue+layui 支持公众号、小程序、H5端,带积分、优惠券、秒杀、会员、分销等功能,前后端“全部”开源,方便二开,详细使用文档可商用。企业公域流量转私域流量必备系统,我们使命:利用互联网助力...
  • (1)Web/Conf目录和Public/Config目录没写入权限,将导致系统配置无法使用,这将系统无法安装和使用; (2)Public/Uploads目录没有写入权限,将导致系统相关附件上传功能不能使用; (3)伪静态设置详情见:rewrite.txt ...
  • 歪酷网站管理系统(歪酷CMS)是一款基于THINKPHP框架开发的PHP MYSQL网站建站程序,本程序实现了文章和栏目的批量动态管理,支持栏目无限分类,引入RBAC权限管理机制(下一版本将会具体实现),实现多管理员管理,程序辅助...
  • 为了支持携程前CTO叶亚明先生(现首席科学家)主导的10X提速战略规划,由前携程系统研发部总监陈绍明先生(Simon Chen)提出该框架最初的构想,陈绍明同时组建了开发团队并决定了该框架的路线图和重大设计决策。...
  • 开发提速很大 (CRUD 零代码热更新自动化,APIJSONBoot 对比 SSM、SSH 等保守估计可提速 20 倍以上) 腾讯官方开源 (使用 GitHub、Gitee、工蜂 等平台的官方账号开源,微信公众号、腾讯云+社区 等官方公告) 社区...
  • 系统采用TP6+Vue+Layui+Mysql核心技术,系统功能介绍[查看],十几个开发交流群,专业售后技术团队,让您二开无忧。 有着详细文档地址:http://help.crmeb.net/crmeb_30 CRMEB赋能开发者,提速企业数字化。 QQ群...
  • 曼波整站系统5.3.0

    2007-12-24 23:53:15
    php5+mysqlclient5+mysql4 环境无法安装曼波520 <br> 11. php5环境,曼波为gb2312编码,安装中文模块后,编辑模块时,参数标签乱码(实际为utf8编码) <br> 12. blog风格单元和分类的 META KEY, ...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

mysql配置提速

mysql 订阅