- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个分区的 InnoDB mysql 表,我需要插入数亿行。
我目前正在使用 LOAD DATA INFILE
命令将许多(想想数千个).csv 文件加载到所述表中。
如果我同时将大块数据插入不同的不同分区,会对性能产生什么影响?
我可能会受益于运行多个进程,每个进程运行一批 LOAD DATA INFILE
语句吗?
杂项信息:
硬件:Intel i7、24GB 内存、Ubuntu 10.04 w/MySQL 5.5.11、Raid 1 存储
freenode IRC 上的#mysql 告诉我性能影响将与普通 InnoDB 或 MyISAM 相同 - InnoDB 将执行行级锁定而 MyISAM 将执行表级锁定。
表结构:
CREATE TABLE `my_table` (
`short_name` varchar(10) NOT NULL,
`specific_info` varchar(20) NOT NULL,
`date_of_inquiry` datetime DEFAULT NULL,
`price_paid` decimal(8,2) DEFAULT NULL,
`details` varchar(255) DEFAULT '',
UNIQUE KEY `unique_record` (`short_name`,`specific_info`,`date_of_inquiry`),
KEY `short_name` (`short_name`),
KEY `underlying_quotedate` (`short_name`,`date_of_inquiry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50500 PARTITION BY LIST COLUMNS(short_name)*/
(PARTITION pTOYS_R_US VALUES IN ('TOYS-R-US') ENGINE = InnoDB,
PARTITION pZAPPOS VALUES IN ('ZAPPOS') ENGINE = InnoDB,
PARTITION pDC VALUES IN ('DC') ENGINE = InnoDB,
PARTITION pGUCCI VALUES IN ('GUCCI') ENGINE = InnoDB,
...on and on...
);
最佳答案
不是完整列表,但有一些提示...
插入行的最快方法是使用LOAD DATA INFILE
请参阅:http://dev.mysql.com/doc/refman/5.1/en/load-data.html
如果这不是一个选项,并且您想加快速度,则需要找到瓶颈并针对它进行优化。
如果分区跨网络,网络流量可能会杀死你同样的 CPU、磁盘 I/O 和内存,只有分析一个样本才能知道。
禁用 key 更新
如果您无法执行load data infile
,请确保禁用 key 更新
ALTER TABLE table1 DISABLE KEYS
... lots of inserts
ALTER TABLE table1 ENABLE KEYS
请注意,禁用 key 更新
仅禁用非唯一 key ,唯一 key 始终更新。
二进制日志
如果你有二进制日志运行,这将记录所有这些插入,考虑禁用它,你可以通过使用符号链接(symbolic link)并在运行期间将其指向 /dev/null
来禁用它批量插入。
如果您希望二进制日志持续存在,您可以同时插入到启用了 blackhole
表和二进制日志的并行数据库。
自增键
如果让 MySQL 计算自动增量 key ,这将围绕 key 生成产生争用。考虑向 MySQL 提供一个预先计算的自动递增主键值而不是 NULL
唯一键
每次插入时都会检查唯一键(为了唯一性),这会占用很多时间。因为 MySQL 需要在每次插入时对该索引进行全扫描。
如果您知道您插入的值是唯一的,最好放弃该要求并在完成后添加它。
当您将它添加回 MySQL 时将花费大量时间进行检查,但至少它只会执行一次,而不是在每次插入时都执行。
关于MySQL 分区 : Simultaneous insertion to different partitions performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860344/
此函数返回一个 2 元组,其中包含列表的最小值和最大值: import Control.Arrow ((***), (>>>), (&&&)) import Data.Semigroup (getMi
我有两个 Java 进程,Processor 和 Simulator。 模拟器每5秒向File X写入规定的数据记录(10行文本)。 处理器不断读取该文件,等待 token 指示有效记录。代码是这样的
我有两个不同的应用程序必须协同工作。进程 1 作为时间源,进程 2 根据进程 1 提供的时间源执行操作。我需要运行进程 2 的多个副本。目标是让一个时间源进程同时向 5-10 个其他进程发出信号时间,
在我的 Backbone.js 应用程序中,我有以下模型和 View : var Operation = Backbone.Model.extend({ defaults: function(
请大家帮忙,这很重要。 我需要在不到 5 分钟的时间内下载大约 2000 张图像。所以我决定进行并行图片下载。 如果有人可以建议我进行并行下载的更好方法或告诉我哪里出错了,我将不胜感激。 在错误日志中
当我阅读 Clojure 代码(比如来自 GitHub 上的各个项目)时,有一些东西我不太理解:在 :require 表达式中,你应该使用 :as 当您仅使用您使用 :refer 引用的函数时?另外,
我在多个客户端连接的客户端服务器聊天程序的客户端实现上遇到问题。问题是我遇到的问题是我应该如何同时发送(聊天消息到另一个客户端)和接收(来自另一个客户端的聊天消息)?发生的情况是我总是发送数据但从不读
我有两个列表: List listA1 = GetFirstList(); List listA2 = GetSecondList(); 和A类定义 class A { public int
我使用了两个图像(img_heart_1 和 img_heart_2)。我有两种动画,一种是平移动画,另一种是缩放 text_anim.xml: animi(Animation),bounce_up.
考虑我有一个如下所示的运行方法,我正在尝试为 MyThread 创建四个线程。语句 1 到 3 可以由线程同时运行,也可以不同地运行。但是我想让Statement 4同时被线程执行。我可以在语句 4
对于新因素感到抱歉,但我正在阅读有关 mysql 的“太多连接”。 http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html m
我正在尝试自定义约束 菜单栏类: import UIKit class ManuBar: UIView { override init(frame: CGRect) { sup
我正在使用尚未为 Swift 4 做好准备的第 3 方库,即打破独占内存访问规则 ( SE-0176)。 因此,我的控制台充满了这些警告: Simultaneous accesses to 0xb1a
我需要调用一堆 *.exe,这样我就可以调用一个记事本文件,其中存储了所有要调用的 *.exe 的所有完整路径,并使用该记事本文件(可以编辑)我想创建一个调用列表的父 exe,其中存在所有子 *.ex
我正在尝试制作一个具有单个服务器和多个客户端场景的客户端服务器聊天应用程序。我的服务器正在工作,但我无法让客户端工作。我正在使用 select() 函数来选择我应该 recv() 还是 send()。
我正在尝试为类似 Pokemon 的游戏编写一个 AI,除了所有的 Action 都事先为两个玩家所知(所有玩家都可以看到)。我已经记录了我需要的所有信息,例如伤害、准确度、暴击率等。 我以为我的目标
假设账户ABC(fund:1000) 发生一笔6000 的取款交易,同时从ATM 取款8000。那么交易将如何管理。数据库是否只打开一个连接并且不允许新连接到同一帐户?? .... 在这种情况下,当交
我一直在尝试将视频(来自我的网络摄像头)同时输出到文件('out.mkv')和管道: 文件获取过滤帧,管道:获取未过滤的原始视频。 我的帧速率是 30 fps。但是,我的文件输出中的帧速率要低得多。
我们需要在一台PC上驱动8到12个显示器,所有显示器都呈现单个3D场景图的不同 View ,因此必须使用多个图形卡。我们目前正在dx9上运行,因此希望移至dx11,以期使此操作变得更容易。 初步调查似
我想以编程方式同时不在XML文件中显示两个动画,它应该 ROTATE和TRANSLATE 我怎样才能做到这一点? 请以某种方式建议我?????? 这是ma代码:> ImageView snowImg1
我是一名优秀的程序员,十分优秀!