标签: innodb

为什么MySQL InnoDB插入这么慢?

我使用大型随机数作为密钥(从另一个系统进入).在相当小的(如几百万行)表中插入和更新所花费的时间比我认为合理的要长得多.

我已经提炼了一个非常简单的测试来说明.在测试表中,我试图让它变得尽可能简单; 我的真实代码没有这么简单的布局,并且有关系和附加索引等.但是,更简单的设置显示了相同的性能.

结果如下:

creating the MyISAM table took 0.000 seconds
creating 1024000 rows of test data took 1.243 seconds
inserting the test data took 6.335 seconds
selecting 1023742 rows of test data took 1.435 seconds
fetching 1023742 batches of test data took 0.037 seconds
dropping the table took 0.089 seconds
creating the InnoDB table took 0.276 seconds
creating 1024000 rows of test data took 1.165 seconds
inserting the test data took 3433.268 seconds
selecting 1023748 rows of test data …
Run Code Online (Sandbox Code Playgroud)

mysql performance innodb

55
推荐指数
5
解决办法
10万
查看次数

删除庞大的MySQL表的最快方法

我有一个庞大的MySQL(InnoDB)数据库,在会话表中有数百万行,这些行是由与我们相同的服务器上运行的无关,故障的爬虫创建的.不幸的是,我现在必须解决这个问题.

如果我尝试truncate table sessions;它似乎需要非常长的时间(超过30分钟).我不关心数据; 我只想让桌子尽快消失.有没有更快的方法,还是我必须在一夜之间坚持下去?

mysql innodb

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

如何设置MySQL使用的默认存储引擎?

我一直在编写SQL来创建一个带有几个默认选项的MySQL数据库,包括字符集和整理.是否可以将此数据库中的表的默认存储引擎设置为InnoDB?

我一直在查看MySQL 5.1手册,我发现了ENGINE=innodb将附加到CREATE TABLE语句中的语句,但我没有找到与CREATE DATABASE语句相关的任何内容.

作为数据库创建的一部分,是否有正常的方法来执行此操作,还是需要逐个表指定?

mysql database innodb

51
推荐指数
2
解决办法
7万
查看次数

Hibernate:创建Mysql InnoDB表而不是MyISAM

如何让Hibernate(使用JPA)创建MySQL InnoDB表(而不是MyISAM)?我发现使用Hibernate生成一个SQL文件来创建表时可以使用的解决方案,但没有任何"动态"工作.

java mysql innodb hibernate jpa

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

在MySQL中更改表引擎

我正在使用mysql和mysql工作台.我用innodb引擎创建了5个表.在我将数据插入其中之前,我检查了他们的引擎并且它是innodb.我从5个MyISAM表中插入数据,现在我的innodb表是MyISAM.我无法改变它们.我使用了alter table engine = innodb但它不起作用.

mysql database myisam innodb

47
推荐指数
2
解决办法
5万
查看次数

设置表关系"Cascade","Set Null"和"Restrict"是做什么的?

我想在新项目中开始使用表关系.

经过一些谷歌搜索后,我得到了2个表作为InnoDB:

我要链接的键是

- > users-> userid(primary) - > sessions-> userid(index)

我在这个过程中唯一不理解的是"On update"和"On delete"的不同设置

这里的选项是:

  • - (没有?)
  • 级联(???)
  • 设置Null(将所有内容设置为null?)
  • 没有动作(好吧......)
  • 限制 (???)

我基本上希望在完全删除用户时删除会话中的数据这个会话只会在我的会话管理器检测到到期时删除...

因此,如果有人能告诉我这些选项是做什么的,那将非常感激.

mysql innodb phpmyadmin relational-database

47
推荐指数
2
解决办法
7万
查看次数

如何在Mac OS上更改MySQL中innodb_buffer_pool_size的值?

我试图增加MySQL 5.1中innodb_buffer_pool_size的大小,因为我一直遇到以下错误,表明我的表锁空间已用完.

ERROR: The total number of locks exceeds the lock table size
Error
Code: 1206
Run Code Online (Sandbox Code Playgroud)

我已经阅读了文档,从我收集的内容中,我需要在/etc/my.cnf文件中更新innodb_buffer_pool_size.我目前的价值是8M.但是,即使在创建该文件并添加以下行来设置值之后,它也不会在MySQL中更新.

set-variable=innodb_buffer_pool_size=256M
Run Code Online (Sandbox Code Playgroud)

有什么建议我如何在我的Mac上调整MySQL的这个值?还有其他建议或建议吗?

mysql innodb

47
推荐指数
3
解决办法
14万
查看次数

如何在SQL查询中使用正则表达式

我有一个简单的任务,我需要搜索以字符串字符开头的记录和后面的单个数字.我正在尝试的是这个

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[d]%')
Run Code Online (Sandbox Code Playgroud)

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[0-9]%')
Run Code Online (Sandbox Code Playgroud)

但是这两个查询总是返回一条null记录

trecord
-------
null
Run Code Online (Sandbox Code Playgroud)

好像我执行以下查询

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA%')
Run Code Online (Sandbox Code Playgroud)

它返回

trecord
-------
ALA0000
ALA0001
ALA0002
Run Code Online (Sandbox Code Playgroud)

这意味着我有以ALA开头的记录和后面的数字,

编辑

我正在使用PHP MySQL和innodb引擎来实现它.

regex mysql sql innodb

44
推荐指数
2
解决办法
18万
查看次数

MySql:MyISAM与Inno DB!

MySql中的MyISAM和Inno数据库类型有什么区别?

mysql database myisam innodb

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

为什么MySQL自动增量会因失败的插入而增加?

一位同事让我意识到一个非常奇怪的MySQL行为.

假设您有一个包含auto_increment字段的表和另一个设置为唯一的字段(例如用户名字段).当尝试插入具有已存在于表中的用户名的行时,插入失败,如预期的那样.但是,在多次尝试失败后插入有效的新条目时,可以看到auto_increment值增加.

例如,当我们的最后一个条目看起来像这样......

ID: 10
Username: myname
Run Code Online (Sandbox Code Playgroud)

...我们在下一次插入时尝试五个具有相同用户名值的新条目,我们将创建一个新行,如下所示:

ID: 16
Username: mynewname
Run Code Online (Sandbox Code Playgroud)

虽然这本身并不是一个大问题,但似乎是一个非常愚蠢的攻击向量,通过使用失败的插入请求充斥它来杀死表,正如MySQL参考手册所述:

"如果值大于可以存储在指定整数类型中的最大整数,则不会定义自动增量机制的行为."

这是预期的行为吗?

mysql innodb auto-increment

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