《MysqL必读有关MysqL优化的一些东东整理》要点:
本文介绍了MysqL必读有关MysqL优化的一些东东整理,希望对您有用。如果有疑问,可以联系我们。
MysqL学习1.查询帮助 ? contents@H_404_9@2.使用合成的散列值,分离BLOB或者TEXT@H_404_9@3.货币使用定点数(decimal或者numberic)@H_404_9@4.sql_mode?@H_404_9@5.order by rand() limit 1000;@H_404_9@6.优化show status like 'Com' Com_select Com_insert等查看插入多还是查询多@H_404_9@7.Handler_read_key 的值将很高,这个值代表了一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用.Handler_read_rnd_next 的值高则意味着查询运行低效,并且应该建立索引补救.这个值的含义是在数据文件中读下一行的请求数.如果你正进行大量的表扫描,该值较高.通常说明表索引不正确或写入的查询没有利用索引.@H_404_9@8.定期分析表 ANALYZE table CHECK table CHECKSUM table@H_404_9@9.优化表 OPTIMIZE table@H_404_9@10.导入大数据:Myisam ALTER table tblname disABLE KEYS loading the data ALTER table tblname ENABLE KEYS;@H_404_9@Innodb SET UNIQUE_CHECKS=0 SET autoCOMMIT=0@H_404_9@11.优化insert:LOAD DATA INfile replace ignore@H_404_9@12.优化group by ORDER BY NulL@H_404_9@13.show status like 'table%'; show status like 'innodb_row_lock%';@H_404_9@14.CREATE table innodb_monitor(a INT) ENGINE=INNODB;@H_404_9@15.影响MysqL 性能的重要参数:@H_404_9@key_buffer_size : 说明:键缓存(变量key_buffer_size) 被所有线程共享;服务器使用的其它缓存则根据需要分配.此参数只适用于myisam 存储引擎.@H_404_9@table_cache:数据库中打开表的缓存数量.table_cache 与max_connections 有关.例如,对于200 个并行运行的连接,应该让表的缓至少有200 * N,这里N 是可以执行的查询的一个联接中表的最大数量.还需要为临时表和文件保留一些额外的文件描述符.@H_404_9@innodb_buffer_pool_size:缓存InnoDB 数据和索引的内存缓冲区的大小.你把这个值设得越高,访问表中数据需要得磁盘I/O 越少.
MysqL学习innodb_flush_log_at_trx_commit:0|1|2@H_404_9@innodb_additional_mem_pool_size:1M@H_404_9@innodb_table_locks:0|1@H_404_9@innodb_lock_wait_timeout:@H_404_9@innodb_support_xa:通过该参数设置是否支持分布式事务,默认值是ON 或者1,表示支持分布式事务.如果确认应用中不需要使用分布式事务,则可以关闭这个参数,减少磁盘刷新的次数并获得更好的InnoDB 性能.@H_404_9@innodb_doublewrite:@H_404_9@innodb_log_buffer_size:@H_404_9@innodb_log_file_size:
MysqL学习1.数据库的设计@H_404_9@尽量把数据库设计的更小的占磁盘空间.@H_404_9@1).尽可能使用更小的整数类型.(mediumint就比int更合适).@H_404_9@2).尽可能的定义字段为not null,除非这个字段需要null.(这个规则只适合字段为KEY的情形)@H_404_9@3).如果没有用到变长字段的话比如varchar,那就采用固定大小的纪录格式比如char.(CHAR 总是比VARCHR快)@H_404_9@4).表的主索引应该尽可能的短.这样的话每条纪录都有名字标志且更高效.@H_404_9@5).只创建确实需要的索引.索引有利于检索记录,但是不利于快速保存记录.如果总是要在表的组合字段上做搜索,那么就在这些字段上创建索引.索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩.@H_404_9@(这条只适合MYISAM引擎的表,对于INNODB则在保存记录的时候关系不大,因为INNODB是以事务为基础的,如果想快速保存记录的话,特别是大批量的导入记录的时候)@H_404_9@6).所有数据都得在保存到数据库前进行处理.@H_404_9@7).所有字段都得有默认值.@H_404_9@8).在某些情况下,把一个频繁扫描的表分成两个速度会快好多.在对动态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况下更是如此.@H_404_9@(具体的表现为:MYISAM表的MERGE类型,以及MYISAM和INNODB通用的分区,详情见手册)@H_404_9@9).不会用到外键约束的地方尽量不要使用外键.
MysqL学习2.系统的用途@H_404_9@1).及时的关闭对MysqL的连接.@H_404_9@2).explain 复杂的SQL语句.(这样能确定你的SELECT 语句怎么优化最佳)@H_404_9@3).如果两个关联表要做比较话,做比较的字段必须类型和长度都一致.(在数据庞大的时候建立INDEX)@H_404_9@4).liMIT语句尽量要跟order by或者 distinct.这样可以避免做一次full table scan.@H_404_9@5).如果想要清空表的所有纪录,建议用truncate table tablename而不是delete from tablename.@H_404_9@不过有一个问题,truncate 不会在事务处理中回滚.因为她要调用create table 语句.@H_404_9@(Truncate table 语句先删除表然后再重建,这个是属于文件级别的,所以自然快N多)@H_404_9@实测例子:@H_404_9@song2为INNODB表.@H_404_9@
代码如下:@H_404_9@MysqL> select count(1) from song2;@H_404_9@+----------+@H_404_9@| count(1) |@H_404_9@+----------+@H_404_9@| 500000 |@H_404_9@+----------+@H_404_9@1 row in set (0.91 sec)@H_404_9@MysqL> delete from song2;@H_404_9@query OK,500000 rows affected (15.70 sec)@H_404_9@MysqL> truncate table song2;@H_404_9@query OK,502238 rows affected (0.17 sec)@H_404_9@@H_404_9@6).能使用STORE PROCEDURE 或者 USER FUNCTION的时候.(ROUTINE总是减少了服务器端的开销)@H_404_9@7).在一条insert语句中采用多重纪录插入格式.而且使用load data infile来导入大量数据,这比单纯的indert快好多.(在MysqL中具体表现为:INSERT INTO tableQ VALUES (),(),...();)@H_404_9@(还有就是在MYISAM表中插入大量记录的时候先禁用到KEYS后面再建立KEYS,具体表现语句:@H_404_9@ ALTER table table1 disABLE KEYS;ALTER table table1 ENABLE KEYS;@H_404_9@而对于INNNODB 表在插入前先 set autocommit=0;完了后:set autocommit=1;这样效率比较高.)@H_404_9@8).经常OPTIMIZE table 来整理碎片.@H_404_9@9).还有就是date 类型的数据如果频繁要做比较的话尽量保存在unsigned int 类型比较快.MysqL学习3.系统的瓶颈@H_404_9@1).磁盘搜索.@H_404_9@并行搜索,把数据分开存放到多个磁盘中,这样能加快搜索时间.@H_404_9@2).磁盘读写(IO)@H_404_9@可以从多个媒介中并行的读取数据.@H_404_9@3).cpu周期@H_404_9@数据存放在主内存中.这样就得增加cpu的个数来处理这些数据.@H_404_9@4).内存带宽@H_404_9@当cpu要将更多的数据存放到cpu的缓存中来的话,内存的带宽就成了瓶颈.
总结以上是内存溢出为你收集整理的Mysql必读有关mysql优化的一些东东整理全部内容,希望文章能够帮你解决Mysql必读有关mysql优化的一些东东整理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)