相关疑难解决方法(0)

大量插入的 InnoDB 表不会使用我所有的 CPU

我有一个几乎从不查询的数据包日志数据库。它只需要快速插入即可。我使用 InnoDB 是因为我想保持 ACID 合规性,因为即使丢失一个数据包也可能对我们的客户造成损害。在性能调优方案中,我通过多个数据库连接向服务器发送 1,000,000 个数据包。但是无论我在 my.cnf 中使用什么设置,我都无法让 mysqld 进程在 12 核的系统上使用超过 900% 的 CPU。(盒子上没有其他东西在运行。)

我设置了以下内容

  • innodb_file_per_table = 1
  • innodb_write_io_threads = 64
  • innodb_read_io_threads = 64
  • innodb_thread_concurrency = 0

如果我使用 MyISAM,我可以在大约 6 秒内写入所有数据包。但是 InnoDB 大约需要 25。我可以让 MySQL 使用剩余的系统资源并更快地插入吗?

编辑:这是表的架构:

+-------+----------------------+------+-----+---------+-------+
| Field | Type                 | Null | Key | Default | Extra |
+-------+----------------------+------+-----+---------+-------+
| t     | bigint(20) unsigned  | YES  |     | NULL    |       |
| a     | char(1)              | YES  |     | NULL    |       |
| sa    | …
Run Code Online (Sandbox Code Playgroud)

mysql innodb myisam optimization mysql-5.5

8
推荐指数
1
解决办法
3589
查看次数

将数据库从一台服务器移动到另一台服务器的最快方法

我正在将单个 MySQL 数据库(约 10GB 未压缩)从一台服务器移动到同一网络上的另一台服务器。当前 MySQL 版本是5.1.41,新版本是5.5.24. 该数据库包含 MyISAM 和 InnoDB 表。是否可以使用这种方法:

  1. 关闭两台服务器上的 MySQL
  2. /data目录从旧服务器复制到新服务器
  3. 启动新服务器

我意识到这个基本问题之前可能已经被问过 1000 次,但我见过的大多数问题都没有提到更改版本并支持 MyISAM 和 InnoDB。

mysql migration

8
推荐指数
1
解决办法
1万
查看次数

查询在一些较新的 MySQL 版本中运行时间较长

我在 MySQL 5.0.15 上创建了一个数据库。我有一个查询,当我在这个 MySQL 版本上运行这个查询时,我得到 0.9 秒的运行时间。当我将此数据库导入到另一个具有相同硬件的 MySQL 服务器并运行相同的查询时,我得到了 120 多个,有时 MySQL 挂起。

5.0 和 5.1 或 5.5 有什么区别?我已经测试了 5.1 和 5.5 版本。

在较新版本中查询是否可能需要更长的时间(例如 mysql 结构更改)?

对不起,我不能把这个查询放在这里,但查询是这样的:

SELECT fl_passenger_ticket. *, 
       fl_aganc.name                             AS agancname, 
       fl_pnr.remark                             AS remark, 
       fl_pnr.reservetime                        AS reservetime, 
       fl_pnr.cancelpnr, 
       fl_flight_date.fromcity                   AS fromcity, 
       fl_flight_date.tocity                     AS tocity, 
       fl_flight_date.flightdate                 AS flightdate, 
       fl_flightdate_capacity.adultper           AS adultper, 
       fl_flightdate_capacity.childper           AS childper, 
       fl_flightdate_capacity.infantper          AS infantper, 
       fl_flightdate_capacity.cancel             AS cancelsegment, 
       fl_flightdate_capacity.tax1adultpric, 
       fl_flightdate_capacity.tax1childpric, 
       fl_flightdate_capacity.tax1infantpric, 
       fl_flightdate_capacity.tax2adultpric, 
       fl_flightdate_capacity.tax2childpric, 
       fl_flightdate_capacity.tax2infantpric, 
       ( fl_flightdate_capacity.tax3adultpric + 
         fl_flightdate_capacity.tax4adultpric + 
         fl_flightdate_capacity.tax5adultpric )  AS taxxtadultpric, 
       ( fl_flightdate_capacity.tax3childpric + …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.5 mysql-5.1 mysql-5.0

6
推荐指数
2
解决办法
9670
查看次数

选择哪个mysql存储引擎?

我很困惑我应该选择哪个 mysql 引擎(让我们谈谈最常用的:MyISAM 和 InnoDB)。

理论说:

  • 两者都适用于 BTree 索引,但 MyISAM 也可以使用 FULLTEXT 索引。
  • InnoDB 在数据完整性方面更加严格,而 MyISAM 则较为松散。
  • InnoDB 有事务,而 MyISAM 没有。
  • InnoDB 有外键和关系约束,而 MyISAM 没有。
  • MyISAM 读取速度更快,但写入速度更慢(我不确定这个)。

当我创建一个表时,如果我想保持完整性并且我想加快通过“文本”进行搜索的查询,我应该总是牺牲一些东西吗?

如果需要,您如何决定使用哪种引擎

  • 正直 ?
  • 速度 ?
  • 约束?
  • 按文字搜索?
  • 交易?

mysql innodb myisam storage-engine full-text-search

6
推荐指数
1
解决办法
3580
查看次数

针对这些项目需求,选择 MyISAM 而不是 InnoDB;和长期选择

很抱歉这篇很长的帖子,但我必须提供尽可能多的信息,以使这个非常模糊的问题更加具体。

我的项目的目标是让用户搜索各种产品的(巨大)数据库。

  • 每个产品都存在于一个类别下。
  • 每个产品将有 10 到 100 个“规格”或“功能”,用户将通过这些“规格”或“功能”进行搜索。

最常见的用例是:

  1. 用户点击一个类别;然后根据需要单击各种子类别。
  2. 用户从 1 或 2 个条件开始并搜索产品。
  3. 然后,用户不断向搜索添加更多条件以缩小产品范围。

我有三个主要表“产品”、“功能枚举”和“功能”。让数据输入用户为产品即时创建新的“功能”非常重要 - 因此我使用 EAV(反)模式。

以下是表的结构:

'products'
    ID(PK), TITLE, CATEGORY
    (Indexed by CATEGORY)
'features_enum'
    ID(PK), TITLE
'features'
    P_ID, F_ID, VAL
    (Indexed by P_ID and then F_ID)
Run Code Online (Sandbox Code Playgroud)

我的主要搜索查询的示例格式:

SELECT
  p.ID,
  p.TITLE PROD_TITLE,
  fe.TITLE FEATURE_TITLE,
  f.VAL
FROM
  products p, features f, features_enum fe
WHERE
  p.CATEGORY = 57 AND
  p.ID = f.P_ID AND
  f.F_ID = fe.ID AND
  (
    (f.F_ID  = 1 AND f.VAL = 'Val1') AND
    (f.F_ID  = …
Run Code Online (Sandbox Code Playgroud)

mysql innodb myisam database-design

6
推荐指数
1
解决办法
1681
查看次数

从 MySQL 5.1.73 升级到 5.6.21 的任何已知问题?

我计划在 CentOS 6.5 机器上运行我的 MySQL DB ver5.1.73 到 MySQL 5.6.21。

我根据我在 StackOverflow 上阅读的内容了解了此操作的基本过程,但我很好奇是否有人在使用 5.1 到 5.6 路线时遇到任何特定问题?

我听说过的一个是某些 TIMESTAMP 列可能会以不正确的时间戳结束。但我很好奇是否还有其他人听说过或遇到过的。

为了缩小我关心的问题,我只关心可能存在数据丢失或一致性问题的任何事情

谢谢!是

mysql mysql-5 mysql-5.1 upgrade mysql-5.6

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

InnoDB 引擎是否跟上内存引擎的速度?

我正在探索 MySQL 5.5.18 版中不同数据库引擎的效率,以查看哪个最适合与 500 万行数据集的范围查询一起使用:

SELECT P.col1, P.col2, P.col3, P.col4, P.col5, P.col6, P.col7, P.col8, P.col9
 , P.col10, P.col10 * R.col3 as 'combi' 
FROM PRODUCT P INNER JOIN RATE R ON R.col2 = P.col2 
WHERE P.col3 = 'y' 
 AND P.col4 >= 1000 
 AND P.col5 >= 5 
 AND P.col6 BETWEEN 10 AND 100 
 AND P.col7 >= 0 
 AND P.col8 >= 7 
 AND P.col9 >= NOW() 
 AND P.col10 * R.col3 BETWEEN 50 AND 80
ORDER BY P.col8 DESC LIMIT 100;
Run Code Online (Sandbox Code Playgroud)

基于对Stackoverflow 的 …

mysql innodb performance memory

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

将旧备份恢复到最新的 MySQL 版本

我们的旧数据库是 MySQL 5.1 服务器,已经有四年的历史了。如果我卸载 MySQL 5.1 Server 并安装最新版本并恢复备份,我会获得性能优势吗?我猜新版本发布说有很多性能优势。

mysql backup

4
推荐指数
1
解决办法
3438
查看次数

MySQL 高 CPU 使用率(MyISAM 表索引)

我有一个继承的 MySQL 数据库的问题。mysqld 有时会使用高达 2300% 的 CPU。唯一的解决方案是服务 mysql stop 并在表上运行 myisamchk -r。修复索引后,我启动 MySQL,一切正常。

关于永久解决方案的任何想法?

编辑(来自评论):

使用 5.5.29-0ubuntu0.12.04.2-log

key_buffer = 16M 
max_allowed_pa​​cket = 16M 
线程堆栈 = 128K 
线程缓存大小 = 8 
myisam-recover = 备份 
最大连接数 = 500 
#table_cache = 512 
#thread_concurrency = 10 
query_cache_limit = 1M 
query_cache_size = 16M 
SELECT SUM(index_length) ndxsize 
FROM information_schema.tables 
WHERE engine='MyISAM'
Run Code Online (Sandbox Code Playgroud)

返回

+-----------+ 
| ndxsize |
+-----------+
| 59862016 |
+-----------+ 
SELECT SUM(data_length+index_length)/power(1024,2) datndxsize 
FROM information_schema.tables 
WHERE engine='MyISAM'
Run Code Online (Sandbox Code Playgroud)

返回:

+--------------------+ 
| 数据大小 |
+--------------------+
| 488.69915199279785 | …

mysql myisam

3
推荐指数
1
解决办法
7520
查看次数