标签: innodb

MySQL Integer与DateTime索引

首先我要说的是,我已经查看了许多类似的问题,但所有这些问题都TimestampDateTime字段类型有关而没有索引.至少这是我的理解.

众所周知,DateTime有一些优势.把它们放在一边了一分钟,并假设表的引擎是InnoDB10+ million records,它查询将更快地执行时标准基于:

  1. 带索引的DateTime
  2. 带索引的int

换句话说,最好将日期和时间存储为DateTimeUNIX时间戳int?请记住,不需要使用任何内置的MySQL函数.

更新

经过MySQL 5.1.41(64位)和1000万条记录的测试,初步测试显示出显着的速度差异int.使用两个表,tbl_dt使用DateTimetbl_int使用int列.几个结果:

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt`;
+----------+
| COUNT(*) |
+----------+
| 10000000 |
+----------+
1 row in set (2 min 10.27 sec)

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_int`;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (25.02 sec)

SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt` WHERE …
Run Code Online (Sandbox Code Playgroud)

mysql indexing innodb

41
推荐指数
2
解决办法
3万
查看次数

Magento安装抱怨InnoDB可用时丢失

在安装过程中,Magento会产生以下错误:

数据库服务器不支持InnoDB存储引擎.

我已经修复了Magento的所有依赖项,并使用SHOW ENGINES在命令行上使用MySQL进行了双重检查,并且肯定有InnoDB可用(也是默认的存储引擎).

这不是访问MySQL配置的问题,其他人可能已经在安装时看到了这一点.

注意:这是在Mac Pro上运行的(我正在开发的域名使用简单的主机DNS重写).

php mysql innodb magento

41
推荐指数
3
解决办法
4万
查看次数

如何为大型二进制数据配置MySQL 5.6 LONGBLOB

在我提出一个问题之前:我正在使用MySQL 5.5数据库的MySQL Workbench 6.1从一台机器到另一台机器上的5.6进行数据导出/导入.这两台机器都是ubuntu,其中一台是32位而另一台是64位.

我转储数据没有问题,但当我尝试加载它时,我得到:

ERROR 1118(42000)在第1807行:行大小太大(> 8126).将某些列更改为TEXT或BLOB或使用ROW_FORMAT = DYNAMIC或ROW_FORMAT = COMPRESSED可能会有所帮助.在当前行格式中,760字节的BLOB前缀以内联方式存储.

这是表创建:

CREATE TABLE `file_content` (
  `fileid` bigint(20) NOT NULL,
  `content` LONGBLOB NOT NULL,
  PRIMARY KEY (`fileid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我有以下相关的my.cnf设置...

max_allowed_pa​​cket = 1G
innodb_file_per_table = 1
innodb_file_format = Barracuda

我花了很多谷歌搜索时间试图找出问题所在.顺便说一句,如果我删除主键(这里没问题,但另一个表有外键的表抱怨.

幸运的是,我有ssh访问框,所以我可以看到实际的mysqldb.log.为什么我发现真的很有意思......

2014-08-12 20:42:12 25246 [错误] InnoDB:总blob数据长度(14179167)大于重做日志文件大小(3072)的10%.请增加innodb_log_file_size.

因此,将重做日志文件大小增加到10x LONGBLOB大小修复了我的问题.但这是否意味着要插入1G LONGBLOB(因为数据包大小而实际最大值),我将需要一个10G innodb_log_file_size.

任何人都可以解释"重做日志大小错误"如何变成"行大小太大(> 8126)"错误.

顺便说一下,我无法控制这个数据库的结构,所以没有"你为什么要在数据库中存储大的blob".

TIA

mysql sql innodb row

40
推荐指数
1
解决办法
6万
查看次数

如何改进INSERT INTO ... SELECT锁定行为

在我们的生产数据库中,我们运行以下每小时运行的伪代码SQL批处理查询:

INSERT INTO TemporaryTable
    (SELECT FROM HighlyContentiousTableInInnoDb
     WHERE allKindsOfComplexConditions are true)
Run Code Online (Sandbox Code Playgroud)

现在这个查询本身并不需要很快,但我注意到它是锁定的HighlyContentiousTableInInnoDb,即使它只是从它读取.其他一些非常简单的查询需要大约25秒(这是其他查询需要多长时间).

然后我发现在这种情况下InnoDB表实际上是被SELECT锁定的!http://www.mysqlperformanceblog.com/2006/07/12/insert-into-select-performance-with-innodb-tables/

但我真的不喜欢选择OUTFILE的文章中的解决方案,它似乎是一个黑客(文件系统上的临时文件看起来很糟糕).还有其他想法吗?有没有办法制作InnoDB表的完整副本,而不会在复制过程中以这种方式锁定它.然后我可以将其复制HighlyContentiousTable到另一个表并在那里进行查询.

mysql select innodb locking insert

39
推荐指数
3
解决办法
4万
查看次数

如何在MySQL innoDB中重建索引并更新统计信息?

我有使用MS SQL服务器的经验,可以更新统计信息重建索引.我在MySQL innoDB中找不到这样的选项,有这样的选择吗?如果没有,MySQL数据库如何创建执行计划?MySQL是否更新了每个UPDATE和INSERT的索引和统计信息?

mysql innodb

39
推荐指数
4
解决办法
9万
查看次数

InnoDB:尝试打开以前打开的表空间

我一直在研究一个问题几天了.我们的本地mediawiki页面位于我们的盒子帐户上,自行销毁,我们一直致力于将其联机.使用XAMPP控制面板v3.2.1,错误很多,所以我们决定更新XAMPP(v3.2.2)并将'htdocs'和'mysql/data'文件移到新的数据库中.

第一个错误:

    9:50:21 AM  [mysql]     Attempting to start MySQL app...
    9:50:22 AM  [mysql]     Status change detected: running
    9:50:22 AM  [mysql]     Status change detected: stopped
    9:50:22 AM  [mysql]     Error: MySQL shutdown unexpectedly.
    9:50:22 AM  [mysql]     This may be due to a blocked port, missing dependencies, 
    9:50:22 AM  [mysql]     improper privileges, a crash, or a shutdown by another method.
    9:50:22 AM  [mysql]     Press the Logs button to view error logs and check
    9:50:22 AM  [mysql]     the Windows Event Viewer for more clues …
Run Code Online (Sandbox Code Playgroud)

mysql xampp mediawiki innodb phpmyadmin

39
推荐指数
4
解决办法
4万
查看次数

将InnoDB表与MyISAM表连接起来

我们有一组表,其中包含元级别数据,如组织,组织用户,组织部门等.所有这些表都将被阅读,只需很少的写操作.此外,表格大小非常小(最大记录数量约为30K - 40K)

另一组表存储OLTP数据,如账单交易,用户操作等,这些数据将同时读写.这些表格非常庞大(每张表约3000万条记录)

对于第一组表,我们计划使用MyISAM,第二组使用InnoDb引擎.我们的许多功能还需要来自这两组的桌子上的JOINS.

使用InnoDB表加入MyISAM表时是否存在任何性能问题?此外,还有任何其他可能的问题(数据库备份,调整等),我们可能会遇到这种设计?

任何反馈将不胜感激.

mysql myisam innodb

37
推荐指数
2
解决办法
1万
查看次数

防止MySQL重复插入时自动增加

使用MySQL 5.1.49,我正在尝试实现一个标记系统我遇到的问题是带有两列的表:id(autoincrement),tag(unique varchar) (InnoDB)

使用查询时,即使忽略插入INSERT IGNORE INTO tablename SET tag="whatever",自动增量id值也会增加.

通常这不会是一个问题,但我希望很多可能的尝试为这个特定的表插入重复项,这意味着我id的新行的字段的下一个值将跳得太多.

例如,我最终会得到一张表3行但不好id的表

1   | test
8   | testtext
678 | testtextt
Run Code Online (Sandbox Code Playgroud)

此外,如果我不这样做INSERT IGNORE并且只是定期INSERT INTO处理错误,则自动增量字段仍会增加,因此下一个真正的插入仍然是错误的自动增量.

如果有INSERT重复的行尝试,有没有办法停止自动增量?

正如我对MySQL 4.1的理解,这个值不会增加,但我想做的最后一件事是要么SELECT提前做很多语句来检查标签是否存在,或者更糟糕的是,降级我的MySQL版本.

mysql innodb insert duplicates auto-increment

37
推荐指数
4
解决办法
4万
查看次数

mysql致命错误:无法为缓冲池分配内存

我有MySQL的这个错误日志,任何想法?网站工作了一段时间,然后我在几个小时后完全关闭了MySQL.

140919 10:48:27 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140919 10:48:27 [Note] Plugin 'FEDERATED' is disabled.
140919 10:48:27 InnoDB: The InnoDB memory heap is disabled
140919 10:48:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140919 10:48:27 InnoDB: Compressed tables use zlib 1.2.3.4
140919 10:48:28 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
140919 10:48:28 InnoDB: …
Run Code Online (Sandbox Code Playgroud)

mysql innodb

36
推荐指数
1
解决办法
5万
查看次数

MySQL - 如何按相关顺序排序?INNODB表

我在INNODB表中有大约20,000行称为'cards',所以FULLTEXT不是一个选项.

请考虑此表:

id     |     name     |     description
----------------------------------------------------------
1        John Smith       Just some dude
2        Ted Johnson      Another dude
3        Johnathan Todd   This guy too
4        Susan Smith      Her too
5        Sam John Bond    And him
6        John Smith       Same guy as num 1, another record
7        John Adams       Last guy, promise
Run Code Online (Sandbox Code Playgroud)

因此,假设用户搜索"John",我希望结果集的顺序为:

7        John Adams
6        John Smith
3        Johnathan Todd
5        Sam John Bond
2        Ted Johnson
Run Code Online (Sandbox Code Playgroud)

请注意,我们只拉了一次'John Smith',我们最近参加了他的录取.由于我的数据,所有名字都是针对同一个人,不需要担心两个名叫John Smith的人.想法?如果我能澄清任何事情,请告诉我.

mysql search innodb sql-order-by relevance

34
推荐指数
1
解决办法
2万
查看次数