mysql 命令备忘录

这句话最重要,放最前面

InnoDB的行锁是通过给索引上的索引项加锁来实现的。
只有通过索引条件进行数据检索,InnoDB才使用行级锁,否则,InnoDB将使用表锁(锁住索引的所有记录)

 

查看mysql建表语句(以下以user表为例)

show create table user

查询mysql 数据存储查询

show create table user

查看数据文件存放位置

show variables like '%datadir%'

查看当前线程处理情况

show full processlist / show processlist
  • Sleep: 线程正在等待客户端发送数据

  • Query: 连接线程正在执行查询

  • Locked: 线程正在等待表锁的释放

  • Sorting result: 线程正在对结果进行排序

  • Sending data: 向请求端返回数据

可通过kill {id}的方式进行连接的杀掉

 

查看缓存情况

show variables like 'query_cache%';

 

query_cache_size: 允许设置query_cache_size的值最小为40K,默认1M,推荐设置 为:64M/128M;

query_cache_limit: 限制查询缓存区最大能缓存的查询记录集,默认设置为1M

query_cache_type: 缓存类型

0– 不启用查询缓存,默认值;

1– 启用查询缓存,只要符合查询缓存的要求,客户端的查询语句和记录集都可以缓存起来,供其他客户端使用,加上 SQL_NO_CACHE将不缓存

2– 启用查询缓存,只要查询语句中添加了参数:SQL_CACHE,且符合查询缓存的要求,客户端的查询语句和记录集,则可以缓存起来,供其他客户端使用

慢查询日志

show variables like '%slow_query_log%'

// 开启慢查询
set global slow_query_log = on

// 慢查询日志保存路径
set global slow_query_log_file = '/var/lib/mysql/slow.log'

// 开启记录没有使用索引查询语句
set global log_queries_not_using_indexes = on

// 设置慢查询时间 0.1 s
set global long_query_time = 0.1 (秒)

// 查询binlog
show variables like '%log_bin%';

 

慢查询日志工具

mysqldumpslow --help


例: mysqldumpslow -t 10 -s at /var/lib/mysql/slow.log

其他工具mysqlsla、pt-query-digest

 

针对自增列自增长的一个特殊的表级别锁(自增锁)

// 默认取值1,代表连续,事务未提交ID永久丢失
show variables like 'innodb_autoinc_lock_mode';

查看mysql的设置的事务隔离级别

select @@tx_isolation;

查找mysql配置文件的位置和加载顺序my.cnf

// 其实在mysql --help可以直接找到,这里通过管道命令截取出来
mysql --help | grep -A 1 'Default options are read from the following files in the given order'

 

最大连接数配置

show variables like '%max_connections%'

 

 

常见全局配置文件配置

port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
max_connections=2000
lower_case_table_names = 0 #表名区分大小写
server-id = 1
tmp_table_size=16M
transaction_isolation = REPEATABLE-READ
ready_only=1

mysql内存参数配置

每一个connection内存参数配置:

sort_buffer_size: connection排序缓冲区大小 建议256K(默认值)-> 2M之内  
当查询语句中有需要文件排序功能时,马上为connection分配配置的内存大小


join_buffer_size:connection关联查询缓冲区大小建议256K(默认值)-> 1M之内
当查询语句中有关联查询时,马上分配配置大小的内存用这个关联查询,所以有可能在一个查询语句中会分配很多个关联查询缓冲区

上述配置4000连接占用内存:4000*(0.256M+0.256M) = 2G

 

//数据缓存、索引缓存、缓冲数据、内部结构
Innodb_buffer_pool_size: innodb buffer/cache的大小(默认128M)  

大的缓冲池可以减小多次磁盘I/O访问相同的表数据以提高性能

参考计算公式:Innodb_buffer_pool_size = (总物理内存 - 系统运行所用 - connection 所用)* 90%

 

mysql其它参数配置

wait_timeout 服务器关闭非交互连接之前等待活动的秒数

innodb_open_files 限制Innodb能打开的表的个数

innodb_write_io_threads
innodb_read_io_threads
innodb使用后台线程处理innodb缓冲区数据页上的读写 I/O(输入输出)请求

innodb_lock_wait_timeout InnoDB事务在被回滚之前可以等待一个锁定的超时秒数

 

参考:

https://www.cnblogs.com/davygeek/p/9272415.html

https://www.cnblogs.com/wyy123/p/6092976.html

你可能感兴趣的:(ORM和数据库系列)