规范化转储表mysql

时间:2015-10-12 02:50:19

标签: mysql database database-performance query-performance normalize

向大家致以问候。

我最近看到有必要深入研究DBA的世界,因为在我当前的公司正在进行更改,其中一些更改是将信息托管提供商迁移到我们自己的系统,在此上下文中我提出以下建议:

供应商向我们提供了总计约750万条记录的交易历史记录,但这些记录并非标准化,所以幸运的是我有一个包含7列概念的表格。

在他们的表中分解3列,以便我为每列提供每个概念索引,当尝试将表“dump”转储到正确规范化的表时,问题就出现了,因为响应时间非常长(需要两天时间查询运行)通过咨询类型:

Theta

insert into sales (col1, col2, col3, ncol1) SELECT col1, col2, col3, (select tn1.id from TN1 Where tn1.concepto = dump.concepto) from dump

ANSI

insert into sales (col1, col2, col3, ncol1) select a.col1, a.col2, a.col3, b.col1 innert from dump to join b on TN1 (b.concepto = a.concepto)

它并不真正知道这是否是使用记录数量对表进行规范化的正确方法,或者是否有其他方法可以实现。

我在“InnoDB”和“MyISAM”之间更改了数据库引擎的类型我在100,000条记录的性能测试中看不到太多变化。

另请尝试转储表“dump”添加索引列并运行更新:

update venta_dump objetivo left join producto fuente on objetivo.producto = fuente.nombre set objetivo.producto_id = fuente.id where 1

ANSI格式和Theta。

但是它也在推动查询,MySQL Workbench通过监控管理器的工作来推进,如果你正在运行查询,但是证明最快的咨询,也取决于硬件在哪里是DBMS。

这是我的配置文件。

 # Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
# Configuration name generated sysdev01 10/07/2015 19:30:43

[Mysql]

CLIENT # #
port = 3306
socket = "C: /xampp/mysql/mysql.sock"

[Mysqld]

GENERAL # #
#user = mysql
default-storage-engine = InnoDB
socket = "C: /xampp/mysql/mysql.sock"
basedir = "C: / xampp / mysql"
pid-file = "mysql.pid"
server-id = -19910709
PLUGIN_DIR = "C: / xampp / mysql / lib / plugin /"
skip-federated


# MyISAM #
key-buffer-size = 64M
myisam-recover-options = FORCE, BACKUP

SAFETY # #
max-allowed-packet = 16M
max-connect-errors = 1000000

# DATA STORAGE #
datadir = "C: / xampp / mysql / data"

BINARY LOGGING # #
log-bin = "mysql-bin"
expire-logs-days = 14
sync-binlog = 1

# CACHE AND LIMITS #
tmp-table-size = 64M
max-heap-table-size = 64M
query-cache-type = 0
query-cache-size = 0
max-connections = 500
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 4096
table-open-cache = 524288

INNODB # #
innodb-log-files-in-group = 2
innodb-log-file-size = 256M
innodb-flush-log-at-TRX-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 1G

LOGGING # #
log-error = "mysql-error.log"
log-queries-not-using-indexes = 1
slow-query-log = 1
slow-query-log-file = "mysql-slow.log"

这是我的硬件

HDD: 540Gb 5400 rpm.
RAM: 8GB 1333Mhz.
Processor: 2.4 GHz i7 4700MQ
S.O. Win 10 Pro

这是开发环境。

我感谢他们的宝贵贡献

0 个答案:

没有答案