如果您禁用 mysql INNODB 表上的键(暂停索引),该设置持续多长时间?
对于像这样的查询:
ALTER TABLE users DISABLE KEYS;
Run Code Online (Sandbox Code Playgroud)
是否在脚本结束时重新启用密钥? 或者它们会持续到您明确重新打开索引?
我有一张包含 14 亿条记录的表。表结构如下:
CREATE TABLE text_page (
text VARCHAR(255),
page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Run Code Online (Sandbox Code Playgroud)
要求是在列上创建索引text。
表大小约为34G。
我尝试通过以下语句创建索引:
ALTER TABLE text_page ADD KEY ix_text (text)
Run Code Online (Sandbox Code Playgroud)
经过 10 个小时的等待,我终于放弃了这种方法。
这个问题有什么可行的解决方案吗?
UPDATE:该表不太可能被更新或插入或删除。之所以要在列上创建索引,text是因为这种sql查询会被频繁执行:
SELECT page_id FROM text_page WHERE text = ?
Run Code Online (Sandbox Code Playgroud)
更新:我已经通过对表进行分区解决了这个问题。
该表在 column 上分为 40 个部分text。然后在表上创建索引大约需要1个小时才能完成。
当表变得很大时,MySQL 索引创建似乎变得很慢。分区将表减少为更小的主干。
我有一个大表,它有一个带有标识主键的聚集索引。我正在决定该表的填充因子的正确值以最小化页面拆分。我们使用每天运行的脚本来维护索引,该脚本测量碎片并采取适当的措施。该表包含可变长度列。
我的第一个想法是将它设置为 100(因为记录应该只写入表的末尾)但我认为对可变长度列的更改也可能导致页面拆分,所以我现在转向 90。
任何建议表示赞赏。
所以,我在我的机器上安装了 MySQL,我需要更改ft_max_word_lenMySQL 将索引的最大字长。但是,当我通过提供的工具设置它并查询它时,它仍然将其列为最多 84 个(我需要 128 个以上)。当我尝试使用命令行时,我得到以下信息:
C:\>mysqld --ft_max_word_len=128
111210 23:55:46 [Warning] option 'ft_max_word_len': unsigned value 256 adjusted to 84
111210 23:55:46 [Warning] option 'ft_max_word_len': unsigned value 128 adjusted to 84
Run Code Online (Sandbox Code Playgroud)
应该注意的是,我尝试在 GUI 工具中将其更改为 256,因此这可能是该值的来源。但是为什么我会得到两个,为什么我不能调整这个值?
值得注意的是,我使用的是 Windows 7 和 MySQL 5.1.41(64 位)。
更新:从@thinice 的评论来看,这让我相信这是 MySQL 中的一个错误(从它的声音来看,这是一个几乎没有记录的错误,我需要对其进行更改)。所以也许我的问题是,有人对如何更改该值有任何了解吗?
所以我有一台运行 Outlook 2007 的 Windows XP SP 3 机器。当我在 Outlook 中搜索使用基本关键字(例如“MySQL”)存在的电子邮件时,我没有得到任何结果。但是,Outlook 给了我以下消息:
搜索结果可能不完整,因为项目仍在编入索引。点击这里了解更多详情。
当我点击时,我得到以下信息:
Outlook 当前正在索引您的项目。
搜索结果可能不完整,因为项目仍在编入索引。
“邮箱 - 用户”中剩余 8783 个项目
所有打开的邮箱中剩余 8812 个项目。
问题是,这些是它几天来一直在报告的数字,而 Outlook 每天开放 8 小时。索引似乎不起作用。据我所知,该指数似乎在大约 3 周前停止了。
如何强制 Outlook 2007 重新索引所有内容并重新开始正常工作?
最近继承了一个很大很乱的数据库,需要清理一下。为了了解大小,主数据库目前包含 3 个大表,每个表大约有 3 亿行,占用大约 225GB 的存储空间。每天添加超过 500 万行。
由于严重的磁盘空间不足(前任根本没有归档旧数据或管理它的大小),我被迫从最大的表中删除了大约 2.8 亿行。这个过程需要 25 多个小时才能完成,在此期间数据库需要与面向客户的应用程序断开连接。
现在,我需要重新索引表,因为选择和插入需要很长时间。但是,我不能无限期地使数据库脱机,我需要能够估计执行重新索引所需的时间。我以前从未重新索引过这么大的表,所以我真的没有任何好的参考点可以利用。
主表包括一个聚集的、单调递增的主键,以及一个非唯一的非聚集键。我有足够的磁盘空间来执行重新索引。
所以我的问题是:人们大约需要多长时间才能做到这一点?估计重新索引时间的好的经验法则是什么?
Vista 和 Windows 7 将少量信息保存到后台的中央位置。
我知道的实例是桌面搜索索引、最近的文档和缩略图(保存到\Users\[User Account Name]\AppData\Local\Microsoft\Windows\Explorer)。
我怎样才能确保没有信息从安装的 TrueCrypt 驱动器或插入的 USB 驱动器中保存?
有没有办法配置 Widnows 7,以便只有用户明确运行的程序,而不是后台服务,才能访问驱动器上的数据。更好的是,是否可以这样做以阻止整个驱动器类别(例如所有可移动驱动器,然后始终将 TC 驱动器安装为可移动驱动器)?
请注意,我不想完全禁用桌面搜索和缩略图缓存——这太不方便了。
编辑:* Bruce Scheiner 的论文与加密卷中的信息泄漏有关。
我正在 Ubuntu 中寻找一种解决方案,该解决方案可以为 PDF(和 ps?)文件编制索引以供以后搜索。
标准是:
在我的情况下,我想索引学术期刊文章的文件夹,因此要求无论使用什么软件创建 PDF,它都能始终如一地工作。我已经在使用参考管理器,所以不想替换它。
例如:一个好的 Beagle 前端,以及一个允许它索引 PDF 的插件将是完美的。
我正在尝试让 Windows Search 在我的 Windows Server 2008 SP2 文件服务器上工作,以便我可以在文件中搜索内容。
我已将 Windows 搜索服务角色添加到服务器,并使用资源管理器中的右键单击属性将一些文件夹设置为“索引此位置”。
问题是,无论是在服务器上还是远程,我都无法在文件中进行搜索。
我似乎在 GUI 中发现了一些不一致的地方,例如“索引选项”面板只显示了 6 个索引位置,但是如果我单击“修改”,我会看到几乎所有内容都被勾选。

例如,“基础设施”下的“SeachTest”文件夹勾选了“索引此位置”选项,但“项目”文件夹没有。我想这就是为什么有些是灰色的,有些不是,但它们都被打勾。T “SearchTest”文件夹包含一些文件,其中只有文本PurpleOrange,所以我应该能够找到这些文件。
所以,总结一下:
PurpleOrange并查看文件的状态?我有下表
CREATE TABLE DiaryEntries
(
[userId] [uniqueidentifier] NOT NULL,
[setOn] [datetime] NOT NULL, -- always set to GETDATE().
[entry] [nvarchar](255) NULL
)
Run Code Online (Sandbox Code Playgroud)
每个用户每天将插入大约 3 个条目。将有大约 1'000'000 名用户。这意味着该表中每天有 3'000'000 条新记录。一旦记录超过 1 个月,我们就会将其删除。
大多数查询都有以下 WHERE 子句:
WHERE userId = @userId AND setOn > @setOn
Run Code Online (Sandbox Code Playgroud)
大多数查询返回不超过 3 行,除了一个返回本月内插入的所有行(最多 90 行)。
插入记录后,日期和用户 ID 不能更改。
现在我的问题是 - 如何最好地安排这张表的索引?我坚持两种选择:
indexing ×10
mysql ×3
sql-server ×3
windows ×2
database ×1
indexes ×1
outlook ×1
outlook-2007 ×1
pdf ×1
privacy ×1
search ×1
truecrypt ×1
ubuntu ×1
windows-7 ×1
windows-xp ×1