MySQL结构:
connector(native c api,jdbc,odbc)
connection pool
sql interface,parser,optimizer,cache and buffer
pluggable storage engines(myisam,innodb,bdb,memory,archive...)
file system,
企业版:cluster,partition backup,security
存储引擎
myisam:表锁,3个文件定义一个表,不支持事物、外键约束,适合读取
innodb:支持事物,行锁,有缓冲池,在关闭autocommit的情况下,和myisam性能类似。
memory:临时中转表
参数文件:my.cnf (my.ini在windows上),show variables like '%xxxxx%'
日志文件:(1)错误日志文件 show variables like '%log_err%'可以找到错误日志文件的路径。(2)查询日志文件,show variables like '%general%' 平时关闭。(3)慢查询日志文件 show variables like '%slow%'; 可能会导致文件体积过大 (4)二进制日志文件,也就是归档文件
socket文件:
pid文件:mysql进程起来后,会把进程写到该文件
表定义文件:frm文件,明文,可以看表结构定义
数据文件:ibd文件,以innodb引擎的数据文件
启动:
/etc/init.d/mysql start
或者/usr/bin/mysqld_safe &
或者$MYSQL_HOME/bin/mysql_safe &
关闭:
mysqladmin -uroot -p shutdown
连接:
mysql -h <host IP address> --protical=TCP -port 3318 -u <username> -p <password>
use <instance_name>
show tables;
sekect * from <table_name>;
用户
用户名格式:username@hostname 如jimmy@hostname
create user <username> identified by <password>;
grant usage on *.* to <user>;
show grant for <user>;
mysql> select user,host from mysql.user; --mysql库的user表
mysql> show grants for deployer@'%';
mysql库
information_schema库:记录了元数据
帮助:
help show database
help show processlist \G 注:\G表示行转列,方便显示结果
mysql支持的数据类型:数字类型,字符类型,日期类型,null
字符集
mysql安全管理:
创建用户制定IP等等
mysql数据库备份:全备和备份binlog
mysql vs oracle
垂直扩展性
oracle:可以通过增加多个cpu提升处理能力
mysql:在5.6之前,提升不高
oracle:使用SAN
mysql:本地盘
高可用:
oracle:vcs,rac,dg/adg,ogg
mysql:replicate 主从
mysql replicate:
GTID的复制:GTID即global transaction ID,mysql 5.6以上
master
slave:I/O thread(读取binlog,写入到relay log), sql thread(读取relay log,replay relay log。写入到当前slave库)
mysql> show slave status \G
异步:生成binlog后,不会管是否传输到slave
半同步:传一个binlog为relay log,会自动降级为异步模式。
mysql优化:
参数优化:最大连接数,缺省字符集,缺省存储引擎,键缓存大小(给myisam用),innodb缓冲池大小,innodb引擎字典缓冲,查询缓冲大小,设置表缓冲,慢查询时间,慢查询日志,超时设置参数
注,几个和oracle不太一样的参数:
autocommit=no(建库时需要为on)
sql_mode=strict_trans_tables,no_auto_create_user,no_auto_value_on_zero
transaction isolation=read-committed
数据库状态:
1.看累计状态
mysql>status
2.看线程状态:
mysql> show processlist
3.看全局运行状态
mysql> show global status