说实在话,我接触过mysql唯一的机会是更新我的wordpress的博客。mysql对我来说绝对是个陌生的领域。
有幸旁听了一次mysql的培训,受益匪浅,做一下笔记以备后面继续学习的时候可以查阅。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
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 |