错误日志 error log       服务启动关闭

查询日志 query log

  •      普通查询日志  general    query log         客户端链接和SQL

  •      慢查询日志     slow  query  log               执行时间超出指定值

二进制日志 binary log   记录数据被修改的相关信息


错误日志

vim /etc/my.cnf

[mysqld_safe]

log-error=/data/3306/mysql_oldboy3306.err


查询日志

mysql> show variables like  'general_log%';         //普通查询日志参数

+------------------+----------------------------------+

| Variable_name    | Value                            |

+------------------+----------------------------------+

| general_log      | OFF                              |

| general_log_file | /application/mysql/data/lnmp.log |

+------------------+----------------------------------+

mysql> set global  general_log = ON;

慢查询:

long_query_time = 1   //超过(大于)1秒的记录,,,,默认10秒

log-slow-queries = /data/3306/slow.log

log-queries-not-using-indexes    // 没有使用索引的查询也将被记录

log-long-format  // 记录激活的更新日志、二进制更新日志、和慢查询日志的大量信息

log-short-format  //少量信息

mysql> show global status like '%slow%'; 

+---------------------+-------+

| Variable_name       | Value |

+---------------------+-------+

| Slow_launch_threads | 0     |   //值较大 说明有些东西正在延迟链接的新线程

| long_query_time     | 1.000000 |  

| Slow_queries        | 0     |    //慢查询的记录数

| log_slow_queries    | ON    |     //是否开启

+---------------------+-------+

2 rows in set (0.00 sec)


二进制日志

log-bin=mysql-bin

mysql> show variables like '%log_bin%';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| log_bin                         | ON    |   

| sql_log_bin                     | ON    |  //临时不记录binlog   用mysql恢复时,可以临时打开

+---------------------------------+-------+



binlog 日志的三种模式

statement level   每修改一条SQL的语句都会记录  不需要记录每一行的 变化

Row  level         记录每一行数据修改的模式,然后在slave端再对相同的数据进行修改   bin-log日志大

mixed           上面 2种模式的混合

mysql> show variables like '%binlog_format%';

+---------------+-----------+

| Variable_name | Value     |

+---------------+-----------+

| binlog_format | STATEMENT |

+---------------+-----------+

mysql> set global binlog_format = 'ROW';        //临时 全局改动  退出再进

mysqlbinlog --no-defaults   --base64-output=decode-rows   -v   mysql-bin.000004//查看ROW型 日志文件

binlog_format=mixed     //修改my.cnf   官方推荐的模式



MyISAM引擎                重要参数:key_buffer_size  = 2048M


  • 不支持事务

  • 表级锁定

  • 读写互相堵塞

  • 只会缓存索引

  • 读写速度快,占用资源相对少

  • 不支持外键约束,但支持全文索引

  • 是5.5.5前缺省的存储引擎

调优精要

  • 设置合适的索引

  • 调整读写优先级,根据实际需求确保重要操作更优先执行

  • 启用延迟插入改善大批量写入性能

  • 尽量顺序操作让insert数据都写入到尾部,减少阻塞

  • 分解大的时间长的操作,降低单个操作的阻塞时间

  • 降低并发数,某些高并发场景通过应用进行 排队队列机制

  • 对于相对静态的数据库数据,充分利用query_cache_size 或 memcached缓存服务可以极大的提高访问效率

  • count只有在去全表扫描的时候特别搞笑 。    select   count(*)  from  he.quan;

  • 可以把主从同步的主库使用innodb, 从库使用MyISAM引擎(不推荐)。

data/mysql

-rw-rw---- 1 mysql mysql  10630 3月  28 01:04 user.frm      //文件保存表的定义

-rw-rw---- 1 mysql mysql   1212 4月   6 07:20 user.MYD      //数据文件

-rw-rw---- 1 mysql mysql   2048 4月   6 07:27 user.MYI      //索引文件

mysql> show engines \G;

-rw-rw---- 1 mysql mysql 134217728 4月   7 02:15 ibdata1      //InnoDB的共享表空间



InnoDB引擎特点

  • 支持事务  支持4个事务隔离级别  ACID

  • 行级锁定

  • 读写阻塞和事务隔离级别相关

  • 具有 非常高效的缓存特性:能缓存索引,也能缓存数据

  • 整个 表和主键已cluster方式 存储,组成一颗平衡树

  • 支持分区,表空间,类似oracle数据库

  • 支持外键约束,不支持全文索引5.5以前,以后支持了。

  • 对MyISAM比,   硬件资源要求比较高


调优精要

  • 主键尽可能小

  • 避免全表扫描,因为会使用表锁

  • 尽可能缓存所有的索引和数据,提高响应速度,减少磁盘IO消耗

  • 在大批量小插入的时候,尽量自己控制事务而不要使用autocommit自动提交

  • 合理设置innodb_flush_log_at_trx_commit参数值,不要过度追求安全性,如果=0,log buffer 每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。

  • 避免主键更新,因为这会带来大量的数据移动





mysql> show engines;  //引擎

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+



/application/mysql/support-files/my-innodb-heavy-4G.cnf  


innodb_buffer_pool_size = 2048M       //缓存innodb表的索引,数据,插入数据时的缓冲  操作系统内存的70%-80%最佳。


修改引擎

mysql> alter table  test engine = MyISAM;  //修改test表的引擎。

/application/mysql/bin/mysql_convert_table_format   --user=root  --password=123456    -engine=MyISAM    hequan    test


yum install perl-ExtUtils-MakeMaker