0

0

1000万条数据导入mysql_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:29:16

|

1356人浏览过

|

来源于php中文网

原创

bitsCN.com

1000万条数据导入mysql

 

今天需要将一个含有1000万条数据的文本内容插入到数据库表中,最初自然想到的是使用Insertinto '表名'values(),(),()...这种插入方式,但是发现这种方式对1000万条数据量的情况,明显效率低下,于是选用了直接将文本内容导入数据表的方法:

LOADDATA LOCAL INFILE '/home/xyw/result.txt' INTO TABLEdomainlib_tmp(domain);

这种方式可以将本地的数据文件'result.txt'直接导入到domainlib_tmp表的domain字段中,这种方式是选择性的导入数据,即只是填充字段domain,如果想填充表中的所有字段,可以使用:

LOADDATA LOCAL INFILE '/home/xyw/result.txt' INTO TABLE domainlib_tmpFIELDS TERMINATED BY '/t' LINES TERMINATED BY '/n';

TERMINATEDBY '/t'表示用/t来分割字段;LINESTERMINATED BY '/n'表示用/n来分割一行。如果您不指定FIELDS子句,则默认值为假设您写下如下语句时的值:

FIELDSTERMINATED BY '/t' ENCLOSED BY '' ESCAPED BY '//'

如果您不指定LINES子句,则默认值为假设您写下如下语句时的值:

LINESTERMINATED BY '/n' STARTING BY ''

windows和linux的文本终止符不相同(windows使用/r/n;linux使用/n),我在这一块就遇到了问题,我在windows下生成了一个文件,然后在linux下使用,发现填充后的每条记录的结尾都有一个未知字符,导致查询失败,最后我使用的方法是把文本的内容重新复制到linux下新建的文本中,然后导入linux下新建的文本内容就可以解决。而且我发现在导入部分字段数据时,无法使用TERMINATEDBY,即下面这种方式会报错:

LOADDATA LOCAL INFILE '/home/xyw/seco.txt' INTO TABLE tmp2(admin) FIELDSTERMINATED by '/t' LINES TERMINATED by '/r/n';

有关Loaddata infile的使用方法自己查阅mysql手册吧。

注意:在导入数据之前一定要把表中的索引删除,否则会特别特别慢。

下面说一下mysql的优化问题。

我发现在使用load data infile时,数据表引擎使用MyISAM比InnoDB快很多!而且数据的查询速度MyISAM也要比InnoDB好,所以我把我的mysql配置文件中默认使用的引擎改成了MyISAM。

有关MyISAM和InnoDB差异的文章,请参考:

MySQLMyISAM和InnoDB对比

 

mysql的优化需要修改mysql配置文件:my.cnf

Mysql配置原则:

配置合理的MySQL服务器,尽量在应用本身达到一个MySQL最合理的使用

针对 MyISAM或 InnoDB不同引擎进行不同定制性配置

针对不同的应用情况进行合理配置

针对 my.cnf进行配置,后面设置是针对内存为2G的服务器进行的合理设置

公共选项:

选项

缺省值

推荐值

说明

max_connections

100

1024

MySQL服务器同时处理的数据库连接的最大数量

query_cache_size

0(不打开)

16M

汽车导购门户整站源码
汽车导购门户整站源码

汽车导购门户网为齐博CMS V7版的基础改编而成的,程序为整站程序,自带3000多数据,安装好在后台恢复数据就可以直接使用哦。 安装前,请必须确认/data/ /cache/目录可写 然后在地址栏目输入安装地址 http://xxx.com/install.php 一步步的安装. blog 博客 wn 万能文章 count 流量统计 exam 考试系统 form 万能表单

下载

查询缓存区的最大长度,按照当前需求,一倍一倍 增加,本选项比较重要

sort_buffer_size

512K

16M

每个线程的排序缓存大小,一般按照内存可以设置为2M以上,推荐是16M,该选项对排序orderby,group by起作用

record_buffer

128K

16M

每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区,可以设置为2M以上

table_cache

64

512

为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量.MySQL对每个唯一打开的表需要2个文件描述符。

 

MyISAM选项:

选项

缺省值

推荐值

说明

key_buffer_size

8M

256M

用来存放索引区块的缓存值,建议128M以上,不要大于内存的30%

read_buffer_size

128K

16M

用来做MyISAM表全表扫描的缓冲大小.为从数据表顺序读取数据的读操作保留的缓存区的长度

myisam_sort_buffer_size

16M

128M

设置,恢复,修改表的时候使用的缓冲大小,值不要设的太大

 

InnoDB选项

选项

缺省值

推荐值

说明

innodb_buffer_pool_size

32M

1G

InnoDB使用一个缓冲池来保存索引和原始数据,这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少,一般是内存的一半,不超过2G,否则系统会崩溃,这个参数非常重要

innodb_additional_mem_po

ol_size

2M

128M

InnoDB用来保存metadata信息,如果内存是4G,最好本值超过200M

innodb_flush_log_at_trx_co

mmit

1

0

0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘;1为执行完没执行一条SQL马上commit;2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.对速度影响比较大,同时也关系数据完整性

innodb_log_file_size

8M

256M

在日志组中每个日志文件的大小,一般是innodb_buffer_pool_size的25%,官方推荐是innodb_buffer_pool_size的40-50%,设置大一点来避免在日志文件覆写上不必要的缓冲池刷新行为

innodb_log_buffer_size

128K

8M

用来缓冲日志数据的缓冲区的大小.推荐是8M,官方推荐该值小于16M,最好是1M-8M之间

 

其他有关my.cnf选项的介绍参考:

mysql配置文件my.cnf详解[部分]

下面给出我的配置:(只是mysqld部分)

################自定义配置################

character-set-server=utf8

default-storage-engine=MyISAM

#default-storage-engine=InnoDB

max_connections=1024

max_connections=1024

query_cache_size=64M

#table_cache=256

#tmp_table_size=35M

#***MyISAM Specific options

key_buffer_size=512M

read_buffer_size=32M

read_rnd_buffer_size=32M

sort_buffer_size=32M

#***INNODB Specific options ***

innodb_additional_mem_pool_size=128M

innodb_flush_log_at_trx_commit=0

innodb_log_buffer_size=8M

innodb_buffer_pool_size=1G

innodb_log_file_size=256M

innodb_thread_concurrency=18

######################################

 

bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

0

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

2

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

1

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

13

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

16

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

2

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

96

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

6

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

187

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 6.3万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.9万人学习

Django 教程
Django 教程

共28课时 | 4.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号