› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
PhA
V2EX  ›  MySQL

问一下 MySQL 参数 大数据量低并发的优化建议

  •  
  •   PhA · Aug 12, 2015 · 4877 views
    This topic created in 4081 days ago, the information mentioned may be changed or developed.
    我是windows server2008 r2系统,128G内存,平时可用60G跑MySQL 极限可以100G跑MySQL

    基本就我自己使用这个服务器,平时主要就是 LOAD DATA INFILE 数据,查询数据,主要就是Count()。但是数据量比较大,基本一个csv都是50G到60G大概10亿行吧,因为都是单纯的查询,所以采用的引擎是myisam。

    遇到过一个问题,在一张表上面建立一个索引查询ok,在增加一个索引查询ok,在增加一个索引查询就都是空数据了,搞不懂为啥会这样。

    尝试过PostgreSQL,但是我们的csv 换行符间隔符都不一样,导入PostgreSQL很多都出错。有其他建议吗?

    想问一下下面这个参数可以吗?水平比较低。还有什么优化建议?
    [client]
    port = 3306
    socket = /tmp/mysql.sock
    default-character-set=gbk

    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    character-set-server=gbk
    skip_name_resolve
    skip-slave-start

    interactive_timeout = 28800000
    wait_timeout = 2147483

    table_open_cache = 1024
    max_allowed_packet = 64M

    key_buffer_size = 20G # 索引大小
    sort_buffer_size = 1G # 排序大小
    read_buffer_size = 5G # 全表扫描大小
    read_rnd_buffer_size = 1G 索引扫描大小

    thread_cache_size = 64
    ft_min_word_len = 4
    default-storage-engine = MYISAM
    transaction_isolation = REPEATABLE-READ

    tmp_table_size = 50G # 临时表
    max_heap_table_size = 50G # 内存表

    myisam_sort_buffer_size = 10G # 排序缓存区:创建修改索引排序时用
    myisam_max_sort_file_size = 50G # 最大临时文件:创建修改索引,导入数据
    myisam_repair_threads = 1
    myisam_recover_options

    server-id = 1

    [mysqldump]
    quick
    max_allowed_packet = 128M
    [mysql]
    no-auto-rehash
    default-character-set=gbk
    [myisamchk]
    key_buffer_size = 512M
    sort_buffer_size = 512M
    read_buffer = 64M
    write_buffer = 64M
    [mysqlhotcopy]
    interactive-timeout
    [mysqld_safe]
    open-files-limit = 8192
    7 replies  •  2015-08-13 11:58:49 +08:00
    usernametoolong
        1
    usernametoolong  
       Aug 12, 2015
    划分几十G内存出来当硬盘用,前提做好热备份。

    其他的表以及结构和参数的优化,坐等楼下的大拿来说。
    ning1022
        2
    ning1022  
       Aug 12, 2015
    这么大的数据,没有接触过!!!把经常需要在where 后的字段加索引,用explain 查查看为啥慢,或者用第三方工具测试下。
    johnnyR
        3
    johnnyR  
       Aug 12, 2015
    key_buffer_size = 20G !?超算麽?
    choury
        4
    choury  
       Aug 12, 2015
    什么版本的mysql?请换innodb,然后将innodb的缓存开到50G
    PhA
        5
    PhA  
    OP
       Aug 13, 2015
    @choury 因为经常算 Count() 所以没有采用innodb,并且是导入数据用innodb速度太慢。目前我想利用触发器插入数据的时候直接分表,但我发现分表数据可以插入成功,但是总表也有数据,每次都2倍的数据量。
    PhA
        6
    PhA  
    OP
       Aug 13, 2015
    @johnnyR 反正没报错,不过利用率也不高,无所谓的,反正也是我自己用,配置大点内存也够用,现在主要是不知道调整那些参数可以比较明显的提升数据库性能,感觉现在电脑io受限,
    F281M6Dh8DXpD1g2
        7
    F281M6Dh8DXpD1g2  
       Aug 13, 2015
    这种需求请用hive
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3346 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:08 · PVG 19:08 · LAX 04:08 · JFK 07:08
    ♥ Do have faith in what you're doing.