- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的 Access 2010 数据库最近达到了 2GB 的文件大小限制,所以我将数据库移植到 MySQL。
我在 Windows Server 2008 x64 上安装了 MySQL Server 5.6.1 x64。加载所有操作系统更新和补丁。
我正在使用 MySQL ODBC 5.2w x64 驱动程序,因为它似乎是最快的。
我的盒子有一个 i7-3960X,配备 64GB RAM 和 480GB SSD。
我使用 Access Query Designer,因为我更喜欢这个界面,而且我经常需要将缺失的记录从一个表追加到另一个表。
作为测试,我有一个带有两个链接表的简单 Access 数据库:
tblData 链接到另一个 Access 数据库和
tblOnline 使用 SYSTEM DSN 链接 ODBC 表。
两个表都包含超过 1000 万条记录。我移植的一些工作表已经有超过 3000 万条记录。
为了选择要追加的记录,我使用了一个名为 INDBYN 的字段,该字段为 true 或 false。
首先,我在 tblData 上运行更新查询:
UPDATE tblData SET tblData.InDBYN = False;
然后我更新所有匹配的记录:
UPDATE tblData INNER JOIN tblData ON tblData.IDMaster = tblOnline.IDMaster SET tblData.InDBYN = True;
这工作得相当快,甚至对链接的 ODBC 表也是如此。
最后,我将所有 INDBYN 为 False 的记录附加到 tblOnline。这也是可以接受的速度,尽管比附加到链接访问表慢。
在 Access 中,一切都 100% 正常工作,而且速度快得令人难以置信,只是数据库变得太大了。
在 Linked Access Table 上,更新 11,500,000 条记录需要 2 分 15 秒。
但是,我现在需要将 SOURCE 表移动到 MySQL,因为它已达到 2GB 的限制。
因此,将来我需要在链接的 ODBC 表上运行 UPDATE 语句。
到目前为止,当我在链接的 ODBC 表上运行相同的简单 UPDATE 查询时,它运行了 20 多分钟,然后爆炸说查询已超过 2GB 内存限制。
两个表在结构上完全相同。
我不知道如何解决这个问题,需要建议。
我更喜欢使用 Access 作为前端,因为我已经为该应用程序设计了数百个查询,没有时间重新开发该应用程序。
我使用 InnoDB 引擎并尝试了各种调整但没有成功。由于我的数据库使用关系表,它看起来是使用 INNODB 而不是 MyISAM 的最佳选择。
我打开和关闭双写并尝试了各种缓冲池大小,包括查询缓存。它对这个特定查询没有影响。
我当前的 my.ini 文件如下所示:
#-----------------------------------------------------------------------
# MySQL Server Instance Configuration File
# ----------------------------------------------------------------------
[client]
no-beep
port=3306
[mysql]
default-character-set=utf8
server_type=3
[mysqld]
port=3306
basedir="C:\Program Files\MySQL\MySQL Server 5.6\"
datadir="E:\MySQLData\data\"
character-set-server=utf8
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
log-output=FILE
general-log=0
general_log_file="SQLSERVER.log"
slow-query-log=1
slow_query_log_file="SQLSERVER-slow.log"
long_query_time=10
log-error="SQLSERVER.err"
max_connections=100
query_cache_size = 20M
table_open_cache=2000
tmp_table_size=502M
thread_cache_size=9
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=1002M
key_buffer_size=8M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_additional_mem_pool_size=32M
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size=16M
innodb_buffer_pool_size = 48G
innodb_log_file_size=48M
innodb_thread_concurrency = 0
innodb_autoextend_increment=64M
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=2000
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=70
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4110
query_cache_type = 1
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_relay_log=10000
sync_relay_log_info=10000
tmpdir = "G:/MySQLTemp"
innodb_write_io_threads = 16
innodb_doublewrite
innodb = ON
innodb_fast_shutdown = 1
query_cache_min_res_unit = 4096
query_cache_limit = 1048576
innodb_data_home_dir = "E:/MySQLData/data"
bulk_insert_buffer_size = 8388608
任何建议将不胜感激。提前谢谢你。
最佳答案
MS Access 通过链接表与 MySQL 的通信速度很慢。非常慢。那是无法改变的事实。为什么会这样? Access首先从MySQL加载数据,然后处理命令,最后将数据放回。此外,它逐行执行此过程!但是,如果您不需要在“更新”查询中使用本地表中的参数或数据,则可以避免这种情况。 (换句话说——如果你的查询总是相同的并且它只使用 MySQL 数据)
技巧是强制 MySQL 服务器而不是 Access 来处理查询!这可以通过在 Access 中创建“直通”查询来实现,您可以在其中直接编写 SQL 代码(使用 MySQL 语法)。 Access 然后将此命令发送到 MySQL 服务器,并在该服务器内直接进行处理。因此,您的查询几乎与在本地访问表中查询一样快。
关于MySQL ODBC 更新查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067507/
更新:随意给我反对票,因为问题是我将文件命名为 _stylesheet.html.erb 而不是 _stylesheets.html.erb。我以为我检查了拼写,但显然我没有。我很抱歉浪费了大家的时间
我有一个 Inno Script istaller 在其中运行子 setup.exe 。当向主安装程序提供静默安装参数时,我必须向 setup.exe 提供静默安装参数。 Inno脚本运行命令: [R
我正在尝试在大型数据库中搜索长的、近似的子字符串。例如,一个查询可能是一个 1000 个字符的子字符串,它可能与匹配项相差数百个编辑的 Levenshtein 距离。我听说索引 q-gram 可以做到
我正在尝试在我的应用程序中实现一个非常简单的绘图 View 。这只是我的应用程序的一小部分,但它正在变成一个真正的麻烦。这是我到目前为止所拥有的,但它现在显示的只是莫尔斯电码,如点和线。 - (v
我有一个运行非常慢的 sql 查询,我很困惑为什么。查询是: SELECT DISTINCT(c.ID),c.* FROM `content` c LEFT JOIN `content_meta`
我搜索过这个,但我发现的所有结果对我来说都毫无意义,而且似乎太复杂了。我希望使用 json 或 simplejson 模块来获取对象中字符串的值。 string = '{"name": "Alex"}
我想编写一个流量生成器来复制正在运行的计算机对内存进行的原始读写需求。 但是正在运行的计算机在其内存引用中也显示出(非常强的)局部性,并且在 64 位地址空间中,只会引用非常小范围的地址(事实上,我已
我正在尝试做一个 Project Euler问题,但它涉及添加一个非常大的数字的数字。 (100!) 用Java的int和long太小了。 谢谢你的建议 最佳答案 类 BigInteger看起来它可能
我想在游戏中实现一个物理引擎,以便计算物体在受力时的轨迹。该引擎将根据对象的先前状态计算对象的每个状态。当然,这意味着要在两个时间单位之间进行大量计算才能足够精确。 为了正确地做到这一点,我首先想知道
Edit3:通过将数组的初始化限制为仅奇数进行优化。谢谢@Ronnie! Edit2:谢谢大家,看来我也无能为力了。 编辑:我知道 Python 和 Haskell 是用其他语言实现的,并且或多或少地
背景 我有一个我编写的简单媒体客户端/服务器,我想生成一个非显而易见的时间值,我随每个命令从客户端发送到服务器。时间戳将包含相当多的数据(纳秒分辨率,即使由于现代操作系统中定时器采样的限制,它并不真正
一位招聘软件工程师的 friend 希望我为他开发一个应用。 他希望能够根据技能搜索候选人的简历。 正如您想象的那样,可能有数百、可能数千种技能。 在表格中表示候选人的最佳方式是什么?我在想 skil
我的意思是“慢”,回调类型等待远程服务器超时以有效触发(调用 vimeo 提要,解析它,然后在场景中显示 uiviews) 我大多不明白它是如何工作的。我希望在返回响应后立即从回调中填充我的 View
您好,我正在研究使用快速可靠的生产者消费者队列进行线程切换。我正在使用 VC++ 在 Windows 上工作。 我的设计基于 Anthony Williams队列,基本上就是一个带有 boost::c
我只是想知道您使用 resharper 的经验。我们有一个非常重的 dbml 文件,因为我们的数据库有很多表,每次我需要打开该文件时,我都会收到来自 resharper 的大量异常。以前有人遇到过这个
我目前正在使用 jQuery 中的隐藏/显示功能来帮助从选择框中将表格过滤成组。 实际代码运行良好,但速度非常慢,有时需要一两分钟才能执行。 我切换了代码,所以它使用 css({'display':'
我按顺序调用了以下两个方法(按顺序使用适当的类级别字段) public const string ProcessName = "This is" public const string WindowT
我很难理解描述反射包的文档/示例。我是一名命令式编程老手,但也是一名 Haskell 新手。你能引导我完成一个非常简单的介绍吗? 包裹:https://hackage.haskell.org/pack
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我正在尝试编写一段代码来操作一个很长的文档(超过一百万行)。在这个文本文件中,有固定间隔(每 1003 行)和之间的某些时间戳有我需要的数据,它有 1000 行长,还有一个标题和两个空行,但我不需要。
我是一名优秀的程序员,十分优秀!