本文主要是阅读《MySQL 技术内幕》/《MariaDB 简单入门》总结而来,有需求的话可以阅读原著。
1. 区别数据库和实例
- 数据库
- 物理操作系统文件或者其他形式文件类型的集合
- 实例
MySQL
数据库由后台线程以及一个共享内存组成
- 关系
MySQL
数据库实例在系统上的表现就是一个进程- 数据库实例才是真正用于操作系统数据库文件的
1.1 启动方式
# 在启动MySQL服务的时候,是已使用以下几种方式
# 特别提及的就是mysql_safa是以一种额外启动其他的特性的安全启动方式,如果在数据库出现问题的时候,可以提供重新启动等的特性
[root@localhost ~]# service mysqld start
Starting mysqld: [ OK ]
[root@localhost ~]# mysqld_safe &
Starting mysqld: [ OK ]
[root@localhost ~]# ps -ef | grep mysqld
root 33683 1 0 17:18 pts/3 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 33785 33683 0 17:18 pts/3 00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 33816 33560 0 17:20 pts/3 00:00:00 grep mysqld
1.2 帮助文档
- 使用
mysql --help
可以查看更多帮助以及特性支持 - 配置读取顺序
- MySQL 数据库会以读取到的最后一个配置文件中的参数为准
/etc/mysql/my.cnf
==>/etc/my.cnf
==>~/.my.cnf
[root@localhost ~]# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
1.3 配置文件
[root@localhost ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
2. MySQL 体系结构
- MySQL 区别于其他数据库的一个最重要特性,那就是存储引擎
- 存储引擎的好处就是能够根据具体的应用建立不用存储引擎表
- 存储引擎是基于表的,而不是数据库
2.1 经常被问到的问题
- 为什么 MySQL 不支持全文索引?
- MySQL 速度低是因为它不支持事务吗?
- 数据量大于 1000 万时 MySQL 的性能会急剧下降吗?
2.2 各存储引擎之间的比较
- 查看支持的存储引擎
# 查看当前使用的MySQL数据库所支持的存储引擎
mysql> show engines \G;
*************************** 1. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MyISAM
Support: DEFAULT
Comment: Default engine as of MySQL 3.23 with great performance
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: InnoDB
Support: YES
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 5. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
5 rows in set (0.00 sec)
- 切换存储引擎
mysql> alter table Shohin engine=MyISAM;
Query OK, 9 rows affected (0.00 sec)
Records: 9 Duplicates: 0 Warnings: 0
- 查看 MySQL 用户
- 可以查出有
root
用户,无需使用密码登录 - 如果需要添加用户,最为暴力的方式就是在这里进行添加
- 可以查出有
mysql> use mysql;
Database changed
mysql> select host, user, password from user;
+-----------------------+------+----------+
| host | user | password |
+-----------------------+------+----------+
| localhost | root | |
| localhost.localdomain | root | |
| 127.0.0.1 | root | |
| localhost | | |
| localhost.localdomain | | |
+-----------------------+------+----------+
5 rows in set (0.00 sec)