问题标签 [myisam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL InnoDB 是否适合这种情况?
我的 MySQL 数据库包含多个 MyISAM 表,每个表包含数百万行。数据库上的插入负载很重,因此我无法在该实时数据库上发出 SELECT。相反,我创建了数据库的副本以进行查询并对其进行分析。
为了分析,我需要发出多个并行查询。查询是独立的(即,查询的结果没有组合在一起),但它们大部分时间都在同一张表上操作。据我所知,每个查询都会锁定整个 MyISAM 表,这意味着并行独立查询会很慢。理想情况下,我更喜欢支持“NO LOCKING”的引擎。我假设 MySQL 没有这样的引擎,那么我应该使用 InnoDB 吗?我可能在这里遗漏了很多东西。请建议在这里采取的正确道路。
谢谢
mysql - 在 myISAM 上重置 AUTO_INCREMENT 而不重建表
请帮助我在生产数据库方面遇到重大问题。我不小心将一个具有非常大值的键插入到一个自动增量列中,现在我似乎无法在没有大量重建时间的情况下更改这个值。
超级慢。
如何在生产中解决此问题?我也不能让它工作(没有效果):
有任何想法吗?
基本上,无论我做什么,我都会溢出:
mysql - 具有 100% SELECT 工作负载的 MySQL 最佳 Linux 文件系统
我有一个 MySQL 数据库,每个表包含数百万行,总共有 9 个表。数据库已完全填充,我所做的只是读取,即没有插入或更新。数据存储在 MyISAM 表中。
鉴于这种情况,哪个 linux 文件系统最适合?目前,我有 xfs。但是,我在某处读到 xfs 的读取性能很差。真的吗?我应该将数据库转移到 ext3 文件系统吗?
谢谢
mysql - 只读 MyISAM 表的加速
我们有一个用于归档旧数据的大型 MyISAM 表。该归档每月执行一次,除这些情况外,永远不会将数据写入表中。无论如何“告诉” MySQL 该表是只读的,以便 MySQL 可以优化从该表读取的性能?我查看了 MEMORY 存储引擎,但问题是这个表太大了,它会占用服务器内存的很大一部分,这是我不想要的。
希望我的问题足够清楚,我是数据库管理的新手,所以欢迎任何意见或建议。
sql - 使用触发器停止具有外键约束的属性中的无效数据?
如何指定一个触发器来检查插入到表外键属性中的数据是否实际存在于引用表中。如果存在,则不应执行任何操作,否则触发器应删除插入的元组。
例如:考虑有 2 个表 R(A int Primary Key) 和 S(B int Primary Key , A int Foreign Key References R(A)) 。
我写了一个这样的触发器:
我确定在触发器的开始和结束块中指定内部子查询时犯了一个错误。我的问题是如何制作这样的触发器?
mysql - MySQL + MyISAM 表大小问题
我有一个测试表。测试表如下:
我在这个表中插入了 5000 万行。
当我确实显示表状态时,avg_row_length 为 7。我期待看到 4,因为 mySQL 使用 4 个字节作为整数。密钥对 avg_row_length 有影响吗?当我查看我的 .MYD 文件时,大小为 334 MB,这正是考虑到 avg_row_length 为 7 时的大小,但我真的希望看到 190 MB,因为我只有一个 int。
我已经包含了 mytest 表的 show table status 的输出。对格式表示抱歉:D 在此先感谢!
亚历山德罗·费鲁奇
mysql - MyISAM 孔会自动填充吗?
当您在 MyISAM 表上运行删除时,它会在表中留下一个洞,直到该表被优化。
这会影响并发插入。在默认设置下,concurrent_inserts 仅适用于没有孔的表。但是,在 MyISAM 的文档中,在 concurrent_insert 部分下它说:
为所有 MyISAM 表启用并发插入,即使是那些有漏洞的表。对于有孔的表,如果它正在被另一个线程使用,则在表的末尾插入新行。否则,MySQL 会获取一个正常的写锁并将该行插入到孔中。
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_concurrent_insert
这是否意味着 MyISAM 会在向表中插入新行时自动填充孔?以前我认为在优化表之前不会修复这些孔。
mysql - 我可以将 Innodb 与外国直接转换为 mysiam 吗?
我想将带有 innodb 表的 db 转换为 myisam,所有这些。我该怎么做这些?表之间存在一些外键。
我怎样才能以最好的方式做到这一点?
mysql - MySql、InnoDB 和空值
以前我为 MySql 使用 MyISAM 存储引擎,并且我将三个字段的组合定义为唯一的。
现在我已经切换到 InnoDB,我认为它导致了这个问题,现在 NULL != NULL。
所以对于下表:
我可以无限次插入 (Field_A,Field_B,Field_C) Values(1,2,NULL) (1,2,NULL) (1,2,NULL) 。
如何防止这种行为?
mysql - MySQL存储过程插入延迟但如果需要首先创建表?
我计划在表格中做很多INSERT DELAYED
事情MyISAM
。但是这些表可能还不存在。例如,假设每天都会存在一个新表。
因此,与其检测我的客户端中没有表并创建然后重试插入,这似乎是存储过程(“函数”)的一个很好的例子。
这可能吗?它会是什么样子?这种方法有什么缺点吗?