草庐IT

innodb_lru_scan_depth

全部标签

mysql - 确保 MYSQL/InnoDB 中大于 255 的 varchar 的唯一性

我有一个包含URL的表格,其中一些超过255个字符。我想对URL列施加唯一性约束,但MySQL不允许我在URL上创建键。我正在使用InnoDB/UTF8表。据我了解,每个字符使用多个字节,key限制为766个字节(在InnoDB中)。根据URL保持行唯一性的优雅方法是什么? 最佳答案 对于MySQL5.7或更新版本,请参阅AndreDalcher'sanswer以更好的方式使用生成的列。你可以使用SHA1hashurl作为唯一键。有可能两个url具有相同的哈希值,但这种可能性小得离谱,因此出于实际目的,此方法应该可以正常工作。您还可

php - InnoDB - 表列值依赖于主键值

我有一个InooDB表:id-主键,自增short_code-varchar(6),唯一一些其他专栏short_code总是根据id在php中生成。问题是我无法在插入记录之前生成short_code,因为我不知道id。我尝试了以下方法:插入一条短代码为空的记录使用mysqli_insert_id或pdo获取插入行的id根据id生成短码,并用新的短码更新记录这行得通,但这真的很慢。我必须执行插入和更新,这很耗时。一个更好的主意是“猜测”我要插入的记录将具有的ID,使用selectmax(id)+1frommytable;(或类似的东西),生成短代码,并插入记录。这里我有一个SELECT和

mysql - 如何为 InnoDB 引擎数据库重新播种 "Auto increment"列?

我正在为表使用人工主键。该表有两列,一列是主键,另一列是日期(数据类型:日期)列。当我尝试从文件(仅包含第二列的值)加载批量数据时,日期的YYYY部分被添加到主键列(这是表中的第一列)并且日期的其余部分被截断。所以我需要重置表格。我尝试使用Truncatetable语句进行操作,但由于错误而失败,因为此表在另一个表的外键约束中被引用。所以我必须使用delete*fromtable;语句来完成它。我确实删除了所有记录,但是当我再次插入记录时(这次使用insertinto语句),它从我之前插入的那一年的最后一年的后一年开始递增ID(即它没有刷新它)。注意:-我使用的是MySQL5.5和In

指定 innodb 数据库类型和字符集时出现 MySQL 语法错误

我似乎无法将我的tables.sql导入到名为callumba_login的数据库中。这是SQL:CREATETABLECountry(country_codechar(2)notnull,country_namevarchar(60)notnull,primarykey(country_code))type=innodbDEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;MySQL说:#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserve

mysql - 如何为mysql innodb配置memcached?

目前我们有一个网站在Centos6.5网络服务器上运行,具有直接管理功能。APC在过去配置并且运行良好,但一些阅读建议还实现memcached来缓存一些静态表(例如菜单)。从MySQL5.6开始,innoDB表与mysql内存缓存守护进程兼容,因此我开始遵循以下指南:http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-installing.html.运行配置脚本并安装守护进程。然而Drupalmemcacheplugin看不到内存缓存正在运行。该模块显然正在检查phpmemcached守护进程,而我的守护进程已经在mysql中

mysql - 我应该将我的数据库从 MyISAM 更改为 InnoDB 吗? (AWS 通知)

我正在开发一个浏览器应用程序,它通过php站点连接到多个MySQL数据库。这些数据库设置在单个AWSRDS实例上。当我设置这些数据库时,我对不同的数据库引擎不是很了解。在了解了不同类型之后,我决定使用InnoDB来满足低IOPS需求,而使用MyISAM来满足高IOPS需求,因为我读到它在某些任务中速度更快。亚马逊网络服务告诉我:DBInstancetest-1containsMyISAMtablesthathavenotbeenmigratedtoInnoDB.Thesetablescanimpactyourabilitytoperformpoint-in-timerestores.C

mysql - 设置 innodb_log_file_size 会使 MySQL 崩溃

所以,我希望能够将最大日志文件大小设置为64M,但是在使用innodb_log_file_size=64M设置之后,MySQL启动正常,但似乎没有任何东西可以正常工作。编辑:我的意思是完全没有。设置其他InnoDB变量不会导致任何问题。我应该如何解决这个问题? 最佳答案 确保MySQL干净地关闭,并从MySQL数据目录(通常是/var/lib/mysql/)删除(或移动到其他地方)所有ib_logfile*文件。我已经对其进行了测试并为我工作。这是sourceofthishint.InnoDB在showtablestatus注释字段

mysql - 为什么 InnoDB 在没有每次更新的情况下继续增长?

我有一个由大量blob组成的表,我想对其进行一些测试。我知道删除的空间不会被innodb回收,所以我决定通过更新它自己的值而不是创建新记录来重用现有记录。但我注意到,无论是删除和插入新条目,还是对现有ROW进行更新,InnoDB都在不断增长。假设我有100行,每行存储500KB的信息,我的InnoDB大小是10MB,现在当我对所有行调用UPDATE(无插入/无删除)时,innodb每次运行都会增长约8MB。我所做的只是在每一行中存储恰好500KB的数据,几乎没有修改,并且blob的大小是固定的。我能做些什么来防止这种情况发生?我知道优化表,但我做不到,因为在正常使用情况下,该表将有60

mysql - 用于大表的 InnoDB 与 MyISAM Wordpress 博客

你好我知道这个问题已经被讨论过很多次了。但是我有一个关于WordPress博客中大表的具体问题。我有大约50,000个帖子和超过100,000个帖子标签。搜索时会占用大量内存和CPU资源。目前我正在为wp_posts和wp_posts_meta使用MyISAM。所以我想知道你的意见,我应该把它改成InnoDB吗?WordPress博客托管在我的vps上,配备2GBRAM和4核CPU,使用CentOS5。我尝试优化MySQL配置并使用数据库缓存插件。那么InnoDB会解决我的问题吗?如果之前有人问过这个问题,请原谅我。我只想知道您的专家意见。谢谢伊凡 最佳答案

MySQL 默认数据库以及如何使现有的非 InnoDB 成为 InnoDB

我正处于项目的开始阶段,到目前为止我一直在使用默认的MySQL数据库。对了,默认的数据库有名字吗?我的问题是如何在不删除当前表和创建新表的情况下将现有表更改为utf-8和InnoDB。是否有一个altertable来使表成为utf-8和InnoDB?谢谢,亚历克斯 最佳答案 MyISAM是MySQL的默认存储引擎(直到5.5.5,此时InnoDB成为默认引擎)。没有默认数据库的概念。要使用InnoDB创建现有表,请使用以下命令:ALTERTABLEtbl_nameENGINE=InnoDB;要将现有表的字符集更改为utf8,请使用以