一些东方MySQL优化整理
2。使用合成散列值分隔散点或文本。
三.货币使用定点数(小数或数值)
4.sql_mode
伦德(1000)5.order极限;
6。优化显示状态like'com'com_select com_insert等查看插入或查询更多
的7.handler_read_key值会很高,这个值代表一行的索引值读到非常低的值的数量表明,性能指标的提高是不高的,因为指数没有经常use.handler_read_rnd_next值意味着查询效率低下,应该被索引的救济。这个值的意义是读对数据文件中的下一行的请求数。如果你正在做大量的表扫描,价值更高。它通常表明查询表的索引是不正确的或写不使用索引。
8。规则分析表分析表检查表和校验表
9。优化表优化表
10。进口大数据:MyISAM表tblname禁用键加载数据表tblname;
InnoDB设置unique_checks = 0套自动提交= 0
11。优化插入:LOAD DATA INFILE取代忽视
12。按空顺序优化组
13.show状态like'table %;显示状态like'innodb_row_lock %;
14.create表innodb_monitor(INT)= InnoDB引擎;
15。影响MySQL性能的重要参数:
key_buffer_size:解释:关键缓存(可变key_buffer_size)是由所有线程共享;服务器所使用的其他缓存是按需分配。这个参数只适用于MyISAM存储引擎。
高速缓存打开的表在table_cache数量:database.table_cache是max_connections.for相关例子,200并联连接,我们应该放慢表至少200×N,其中N是在加入可执行的表的最大数目。也有必要保留临时表和一些额外的文件描述符文件。
innodb_buffer_pool_size:缓存数据和索引的InnoDB内存缓冲区的大小。高你设置这个值,那么磁盘I / O是需要访问表中的数据。
innodb_flush_log_at_trx_commit:0 | 1 | 2
innodb_additional_mem_pool_size:1m
innodb_table_locks:0 | 1
innodb_lock_wait_timeout:
innodb_support_xa:将支持通过这个参数的分布式事务,与默认值或1,说明分布式事务的支持。如果你不需要在确认程序中使用分布式事务,你可以关闭这个参数,减少磁盘刷新的次数和获得更好的InnoDB的性能。
innodb_doublewrite:
innodb_log_buffer_size:
innodb_log_file_size:
1的设计。数据库
尽量在数据库中弥补较小的磁盘空间。
1)。尽可能使用较小的整数类型。(MEDIUMINT比int更合适)。
2)。尽可能将字段定义为非空,除非字段需要null。(此规则只适用于带键的字段)。
3)。如果可变长度字段是不能用的,如VARCHAR,固定大小的记录格式,如char。(char总是比varchr),使用。
4)。表的主要索引应尽可能短。这样,每一条记录都有一个名称标记,而且效率更高。
5)。只需创建一个真正需要的索引,索引有利于记录的检索,但不利于记录的快速保存。如果你总是在表的组合字段上搜索,那么索引就在这些字段上创建。索引的第一部分必须是最常用的字段。如果您总是需要使用多个字段,则应该首先复制这些字段,以便更好地压缩索引。
本表适用于MyISAM引擎,不是InnoDB非常相关的保存记录时,因为InnoDB是基于交易,如果你想保存的记录很快,特别是当大量进口记录。
6)。所有数据必须在保存到数据库之前进行处理。
7)。所有字段都必须具有默认值。
8)。在某些情况下,将频繁扫描的表划分为两个速度要快得多,当扫描动态格式表时,可能会使用较小的静态格式表,以便获得相关记录。
(具体表现是:合并式的MyISAM表,和MyISAM和InnoDB,常见的分区详见说明书)
9)。不要在外键约束不使用的地方使用外键。
2。系统的使用
1)。及时关闭与MySQL的连接。
2)解释复杂的SQL语句。
3)。如果要比较这两个相关表,那么进行比较的字段必须是相同的类型和长度。(在数据较大时设置索引)
4)the.limit声明试图避免全表扫描。按顺序或区别排列。
5)。如果要清除表记录,用TRUNCATE删除表的字段。建议而不是
但是,有一个问题,截断在事务处理中不会回滚,因为她想调用创建表语句。
(截断表语句首先删除表,然后重建,这是一个文件级,所以自然快N多)
测量实例:
松是InnoDB表。
复制代码代码如下所示:
MySQL > select count(1)从2;
---------- + +
|计数(1)|
---------- + +
500000 | |
---------- + +
1行集(0.91秒)
Mysql> delete from song2;
查询OK,500000行受影响(15.70秒)
MySQL >截断表2;
查询OK,502238行受影响(0.17秒)
6)。使用存储过程或用户功能时。(例程总是减少服务器端开销)
7)。在INSERT语句中,使用多个记录插入格式。和LOAD DATA INFILE用来导入大量数据,这比简单的indert快得多。(在MySQL数据库中,它表现为插入tableq值(),(),…()。
(同样,当你插入大量的MyISAM表,记录您禁用它的钥匙后再设置键。
修改表表表表1启用禁用按键;按键;
为innnodb表插入设置自动提交= 0之前;结束后:设置自动提交= 1;这是更有效的。)
8)。经常优化表来整理碎片。
9)。另外,如果经常比较类型日期的数据,那么尽可能快地保存在无符号int类型中。
三.系统瓶颈
1)。磁盘搜索。
并行搜索,将数据分别存储到多个磁盘中,可以加快搜索时间。
2)。磁盘读写(IO)
数据可以从多个媒体并行读取。
3)CPU周期
数据存储在主存中。这必须增加处理数据的CPU数量。
4)。内存带宽
当CPU在CPU缓存中存储更多数据时,内存带宽成为瓶颈。