Questions tagged «myisam»

MyISAM是MySQL的非事务存储引擎。它提供了高速存储和检索以及全文搜索功能。此外,它是5.5之前的MySQL版本的默认存储引擎类型。

2
使用索引日期时间列的MySQL性能问题
我试图解决以下问题大约一个小时,但仍然没有解决任何问题。 好的,我有一张桌子(MyISAM): +---------+-------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | http | smallint(3) | YES | MUL | 200 | | | elapsed | float(6,3) | NO | | …

4
在使用InnoDB引擎输入数次演出后,MySQL LOAD DATA INFILE速度降低了80%
我正在通过LOAD DATA INFILE加载100GB文件。我在MyISAM上取得了成功,几个小时就完成了。 我现在正在尝试使用InnoDB。负载以超过10MB / sec的速度快速启动(监视表文件的增长file_per_table是否已打开)。 但是,在大约5GB的数据传输之后,它会降低到2-4MB /秒的范围,而当我超过20GB时,它的传输速度会降低到2MB /秒左右。 InnoDB缓冲池的大小为8G。在运行LOAD DATA INFILE命令之前,我已经完成了以下操作: SET @@session.sql_log_bin=0; SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; alter table item_load disable keys; //Run LOAD DATA INFILE.... 我看不出它启动良好并随着时间的推移变慢的原因。 另外,使用相同的设置,我使用InnoDB和MyISAM和5GB测试数据集对表运行了相同的LOAD DATA INFILE命令,MyISAM快20倍: InnoDB: mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load; Query OK, 2630886 rows affected, …

2
为什么MySQL在磁盘上创建了这么多临时表?
任何配置错误都能导致mysql..mysql调谐器显示创建过多的临时表吗 Current max_heap_table_size = 200 M Current tmp_table_size = 200 M Of 17158 temp tables, 30% were created on disk table_open_cache = 125 tables table_definition_cache = 256 tables You have a total of 97 tables You have 125 open tables. Current table_cache hit rate is 3% 较早的临时表是“在23725个临时表中,有38%是在磁盘上创建的”,但我将max_heap和tmp_table从16m更改为200m,并将其降低到30%。 组态: engine myisam …
13 mysql  innodb  myisam  memory 

5
在同一台物理服务器上运行复制是否明智?
我正在考虑为我的数据库设置主从复制。从属服务器将用于冗余,可能还用于报告服务器。但是,我遇到的最大问题之一是,我们已经在数据中心实现了最大的供电能力。因此,添加另一台物理服务器不是一个选择。 就cpu而言,我们现有的数据库服务器未得到充分利用(四核的平均负载从未真正超过1)。因此,最主要的想法是投入一些新的驱动器,并将内存增加一倍(从8GB到16),并在同一台物理计算机上运行另一个mysql实例。每个实例将具有用于数据库的单独磁盘。 这个想法有什么问题吗? 编辑(更多信息):幸运的是,我从未发生过任何严重的事情来关闭服务器,但是我正在尝试提前计划。我们当然有每晚可以从中恢复的备份。但是我认为,如果主服务器的驱动器发生故障(如果整个计算机都熄灭,显然不会),那么将冗余数据存储在单独的磁盘上将提供更快的解决方案。 至于报告方面,我们要报告的任何表都是MyIsam。因此,对要写入的同一表进行昂贵的读取可能会使服务器瘫痪。我的假设是有一个从属服务器进行报告不会影响主服务器,只要我们向其提供足够的内存即可(因为cpu负载尚未成为问题)。


3
MySQL实例拖延“做SYNC索引”
问题 运行(主要是)一个带有InnoDB表的数据库的MySQL 5.6.20实例在1-4分钟的时间内偶尔出现所有更新操作的停顿,而所有INSERT,UPDATE和DELETE查询都保持“查询结束”状态。这显然是最不幸的。MySQL慢查询日志甚至记录了具有疯狂查询时间的最琐碎的查询,其中数百个具有相同的时间戳,对应于已解决停顿的时间点: # Query_time: 101.743589 Lock_time: 0.000437 Rows_sent: 0 Rows_examined: 0 SET timestamp=1409573952; INSERT INTO sessions (redirect_login2, data, hostname, fk_users_primary, fk_users, id_sessions, timestamp) VALUES (NULL, NULL, '192.168.10.151', NULL, 'anonymous', '64ef367018099de4d4183ffa3bc0848a', '1409573850'); 设备统计信息显示出增加了,尽管在此时间段内I / O负载没有过多(在这种情况下,根据上述语句的时间戳,更新停顿了14:17:30-14:19:12): # sar -d [...] 02:15:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util …

1
经常查询100,000条记录的MySQL表
我有一个大约100个表的数据库,用于存储各种信息。 最重要的表是我们的订单表,该表用于存储客户的订单,截止到现在并且正在不断增长,已超过100000条记录。 该表是我们数据库中查询最多的表,用于实时订单仪表板,统计信息,分析等所需的信息的各个部分。 我会定期监视数据库,并在数据库上启用慢速查询以跟踪问题。 我每天都使用mysqltuner之类的脚本来执行查询。 我还使用mysqlsla收集有关数据库中最慢的10个查询的信息。 sample stat Count : 11.48k (30.66%) Time : 19.623758 s total, 1.709 ms avg, 239 µs to 2.475017 s max (18.64%) 95% of Time : 5.246833 s total, 481 µs avg, 239 µs to 1.095 ms max Lock Time (s) : 14.460071 s total, …

2
从MyISAM转换为InnoDB有任何麻烦吗?
我已经准备好从MyISAM迁移到InnoDB,但想知道是否有要查找的完整列表?例如,我没有看到任何列表提到DISABLE KEYS在InnoDB表上运行会抛出警告,除了的手册页ALTER TABLE。在转换之前,我需要了解这种事情。我以为我可以查询很好,但显然不行。
11 mysql  innodb  myisam 

2
如何删除空表
是否可以从庞大的数据库(mysql)中删除所有空表? 我正在寻找一个sql命令来自动删除所有这些空表。 当前,我的数据集中有305个表,其中约30%是旧的空表,这些表将不会在新应用程序中使用。 只是为了澄清;所有表的类型为= MyISAM
11 mysql  myisam 


2
防止查询等待表级锁定的方法
将客户的数据库移至其他服务器后,我们遇到了问题。这应该会对站点的性能产生积极影响,但是MyISAM中的表锁定存在问题。(我听说过使用InnoDB代替MyISAM,但是我们不能在不久的将来更改引擎)。 我们可以将其发现为更新查询,该更新查询是由主持人在文章站点上激活评论时执行的。这是过程: 更新查询已处理 SET status = 1 WHERE id = 5(已设置索引) 页面的缓存文件被删除 此时,整个页面变慢。数据库本身忙了几分钟。我几次获取进程列表,并看到了大约60个不同选择查询的条目,它们都处于等待表级锁定的状态。 1.我不理解为什么表上的此更新article_comments会影响表article等待表级锁定的选择语句。在进程列表中,几乎所有等待查询都来自该表。我已经读过一个事实,即更新/插入优先于选择,并且这可能会导致此类问题,但是当注释被激活时,articles-table本身不会被更新,因此选择不应该等待。我错过了吗? 2.除了更改为InnoDB以外,还可以采取其他措施来防止此行为或至少获得更好的平衡吗?对于将数据库移动到新服务器之前没有出现此问题,我感到非常恼火。我猜有一些配置错误,但我不知道如何识别。

1
为什么全文搜索返回的行少于LIKE
我没有像我想要的那样进行全文搜索,而且我不了解结果列表中的差异。 语句示例: SELECT `meldungstext` FROM `artikel` WHERE `meldungstext` LIKE '%punkt%' 返回92行。我收到具有匹配项的行,例如,在列meldungstext中显示“ Punkten”,“ Zwei-Punkte-Vorsprung”和“ Treffpunkt”。 我在“ meldungstext”列上设置了全文索引,并尝试了以下操作: SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*') 这仅返回8行。我只会收到与“ Punkt”本身匹配的行,或者与“ i-Punkt”一样被视为“ Punkt”的单词。 然后,我尝试了布尔模式: SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*' IN BOOLEAN MODE) 返回44行。我收到在meldungstext列中包含“ Zwei-Punkte-Vorsprung”或“ Treffpunkt”的行,但没有包含“ Punkten”的行。 为什么会发生这种情况?如何设置“完全”的全文搜索,以防止在子句中使用LIKE'%%'?

2
在Debian上对单个MySQL查询使用多个内核
我正在将MySQL服务器运行在Debian作为来宾OS的VM(VMWare)上进行测试。来宾系统具有四个模拟的CPU内核,因此我将thread_concurrency设置为四个。 我正在大型表上进行昂贵的联接,这可能需要花费几分钟,但是我在客户机操作系统上看到,一次只使用一个核心。无论涉及的表使用了什么存储引擎(都已通过MyISAM和InnoDB测试),都会发生这种情况。另外,在执行这些大查询时,整个数据库似乎被阻塞,我无法并行执行任何其他查询。奇怪的是,htop显示,查询的核心在查询运行期间发生了变化! 为什么会这样? 这是来自的相关条目SHOW FULL PROCESSLIST;(没有其他查询): | 153 | root | localhost | pulse_stocks | Query | 50 | Copying to tmp table | SELECT DISTINCT * FROM `pulse_stocks`.`stocks` sto, `pulse_new`.`security` sec WHERE (sto.excntry = sec.excntry AND sto.stock_id = sec.ibtic) OR ( sto.isin = sec.isin AND sto.isin <> "" AND …

1
在繁忙的主从复制系统上恢复单个mysql数据库
在繁忙的复制系统中寻找一种策略或工具来将单个数据库恢复到某个时间点。 我有12个数据库以主从复制配置在2个MySQL 5.0.77服务器上运行。每天对只读从属服务器进行一次完全转储,并且有可用的增量SQL转储,这些备份不在现场并监视复制状态。 编辑:表是InnoDB和myISAM的混合,因此引擎特定的解决方案不可用。 因此,考虑到主服务器完全故障,我可以中断复制并升级从服务器,也可以选择重建新服务器并从越过FULL备份进行配置,然后应用每小时从从服务器获取的差异。 但是,我担心如何处理部分故障或单个数据库的故障。我可以想到两种可能的情况; 例如,数据库7损坏,继续处理一些请求,直到有人注意到它已损坏,或者来自日志文件的警报... 某些查询,例如放置数据库,放置表,“更新位置...”类型的查询,将使单个数据库或其中的某些子集失效。 目前,我有一堆完整的转储文件,例如FULL- $ DATE-all-databases.sql.gz文件,以及可以应用于DIFF- $ DATE-all-databases.sql.gz的差异文件 要将数据库7恢复到某个时间点,将需要通过FULL和DIFF文件进行grep,并手动应用该sql。 为了使能够恢复到以前的DIFF转储到master数据库之一的状态,我应该如何进行? 我是否需要备份到单个数据库文件,即 mysqldump --databases "database1" | gzip > database1.sql.gz mysqldump --databases "database2" | gzip > database2.sql.gz mysqldump --databases "database3" | gzip > database3.sql.gz 而不是.. mysqldump --master-data --lock--all-databases --all-databases | gzip > all-databases.sql.gz 如果我要查找单独的mysqldump文件,那么主数据二进制日志会如何处理,我甚至应该为主服务器恢复转储设置--master-data吗?

5
如何确定最佳sort_buffer_size?
我从一个示例配置文件中读取内容,该文件显示以下内容: # Sort buffer is used to perform sorts for some ORDER BY and GROUP BY # queries. If sorted data does not fit into the sort buffer, a disk # based merge sort is used instead - See the "Sort_merge_passes" # status variable. Allocated per thread if sort is …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.