MySQL linux 服务器和 my.cnf 优化多行

标签 mysql linux ubuntu ubuntu-12.10

如何优化 Linux MySQL 服务器以更快地查询多行(最多 10 亿)表。

服务器仅用于开发,因此安全性、可用性或恢复不是问题。

这是一个例子:

ALTER TABLE link ADD UNIQUE KEY url_index(url(255))
  • 持续时间>6小时
  • 链接数(约 2000 万)
  • CPU 使用率低(~19%)
  • 高 IO(iotop mysql 主要返回 600 KB/s 的读取速度和 500 KB/s 的写入速度,其中 99% 的 IO 达到 2-3 MB/s)

链接表:

CREATE TABLE `links` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `url` varchar(2000) NOT NULL,
  `domain` varchar(255) DEFAULT NULL  
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=27765646 DEFAULT CHARSET=utf8;

我有一个专用的 Linux 服务器(ubuntu 12.10)

  • 6 GB 内存
  • 1 TB HDD(非 SSD)

my.cnf (http://pastebin.com/vx6BNqrE)

我可以在软件方面优化什么(查询/表设计和 my.cnf 或其他服务器配置),以及在 RAM 之外的硬件方面应该首先升级什么(不幸的是 RAM 不可升级,因为只有 3 个 RAM 插槽可用)。

更新

最佳答案

您需要开始扩展,而不是进行可能在一小时内增加几笔交易的微观优化。

首先,获得一 block SSD。如果您需要更多空间,请对它们进行 RAID。如果您真的关心性能,SSD 就很大,尤其是在 IO 方面。

其次,一台服务器只能走这么远。您需要开始设置从属设备来减轻部分负载,它们还可以用作漂亮的故障转移。

MySQL 并不是真正为按需模式更改而设计的,因此更改表很难回答;实际上,我会让服务器停止服务以防止锁定,运行更改表,然后将其与丢失的内容同步备份,并与其他服务器一起执行。您实际上应该只选择一种模式并坚持使用它。

祝你好运!

关于MySQL linux 服务器和 my.cnf 优化多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14270322/

相关文章:

MySQL :- insert data in two difference database

sql - 挣扎着看我方法的错误(mysql函数)

php - 如何解决消息 : Trying to get property of non-object error in Codeigniter?

linux - 如何从多个文件中剪切多列并将输出打印到不同的文件

php - 无法使用 ubuntu 服务器发送谷歌邮件 CodeIgniter

android - Flutter 卡死系统(ubuntu)

MySql 查询根据今天的日期选择用户

linux - 在 bash 脚本中将字符串发送到标准输入

linux - SFTP 因 "Match Group"子句而失败

ruby - redmine 安装失败,ruby 3.0.4,mysql2 (0.5.4) "undefined method ' split '""rb_enc_interned_str not found"