mysql分布式思维(二)-备份恢复

存储引擎优化
一、myisam存储引擎优化
1.索引缓存优化
    1.1myisam存储引起实现机制及索引文件的存放格式
          .myi文件中
   头(四部分信息)紧跟索引数据信息
   索引数据以Block(page)为最小单位
   Index Block ---->逻辑上组织形式
   物理上是以File Block存储磁盘
   Key Cache中缓存的索引信息是以Cache Block形式组织存放的。
          query读数据的过程  看图
    1.2 MyISAM存储引擎索引缓存相关的参数
       a.key_buffer_size----->索引缓存大小  (KeyCache大小)
          三个指标   系统索引的总大小、可用物理内存、系统当前的key cache命令率
   可以参考官方手册提供的一个粗略计算的公式:
   Key_Size = key_number * (key_length+4)/0.67
   Max_keyBuffer_size < Max_RAM-QCache_Usage-Threads_Usage-System_Usage
   Thread_Usage = max_connections*(sort_buffer_size+join_buffer_size+read_buffer_size+read_rnd_buffer_size+thread_Stack)
  
   查看Key Cache相关的状态变量:
   show status like 'key%';

| Key_blocks_not_flushed | 0     |
| Key_blocks_unused      | 45920 |
| Key_blocks_used        | 0     |
| Key_read_requests      | 0     |
| Key_reads              | 0     |
| Key_write_requests     | 0     |
| Key_writes             | 0     |
+------------------------+-------+
          将来可以通过这些参数计算命中率等信息
   Key_buffer_Read_HitRatio = (1-Key_reads/key_read_requests)*100%
   Key_buffer_Writer_HitRatio = (1-key_writes/key_writer_requests)*100%;
   Key_buffer_UsageRatio = (1-key_blocks_used/(key_blocks_used+key_block_unused))*100%

   b.key_buffer_block_size   索引缓存中的cache_block_size
      key_cache_divsion_limit
                     ---->Hot Area  / Warm Area
       ---->划分该范围比例的,默认是100,只有Warm Area 可以1到100
  1.3 NULL值对信息统计的影响。
        myisam_stats_method = nulls_equal   认为每个null值都一样。
                                            nulls_unequal

  1.4 表读取缓存优化
        read_buffer_size   Sequential Scan方式扫描数据时使用的buffer
 read_rnd_buffer_size   Random Scan方式时使用的buffer

淘宝站当中   读数据的库核心主要是用mysql的myisam存储引擎
二、Innodb存储引擎优化
    1.innodb_buffer_pool_size参数的设置
       该参数对innodb存储引擎的性能有决定的影响。
       很多介绍都直接说设置在物理内存的50%到80%
       应该更严谨一些

       总内存-独占内存-适当冗余

       假设单独MySql使用的主机,物理总内存8GB同时使用了MyISam存储引擎
       内存如何分配
          a)系统冗余:800M
   b)myisam :1.5G
   c)线程独占部分500个连接*(1mb+1mb+1mb+512kb+512kb)--->2G
       sort_buffer_size   1m
       join_buffer_size 1m
       read_buffer_size 1m
       read_rnd_buffer_size 512kb
       thread_stack 512kb

       innodb_buffer_pool_size = 8G-1.5G-2G-800M=3.7G

       show status like 'innodb_buffer_pool%';查看跟innodb_buffer_pool_size相关的参数
  2.innodb_log_buffer_size

  3.事务优化
      事务隔离级别等基础知识  了解
      innodb_flush_log_at_trx_commit
         有三个值0 , 1,2

         4.数据存储优化
       主键字段存储空间越小越好
       表的创建尽量自己指定相应的主键
       主键不要更新
       进可能提供主键查询

猜你喜欢

转载自394498036.iteye.com/blog/2291411