去重:distinct
10、mysql优化
①设计角度:存储引擎的选择,字段类型选择,范式
②功能角度:可以利用mysql自身的特性,如索引,查询缓存,碎片整理,分区、分表等
③sql语句的优化方面:尽量简化查询语句,能查询字段少就尽量少查询字段,优化分页语句、分组语句等。
④部署大负载架构体系:数据库服务器单独出来,负载大时可以采用主从复制,读写分离机制进行设计
⑤从硬件上升级数据库服务器。
11、Mysql中int1和int10 有什么区别?
INT[(M)] [UNSIGNED] [ZEROFILL]
普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。
INT(1) 和 INT(10)本身没有区别,但是加上(M)值后,会有显示宽度的设置
12、Mysql事物
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务用来管理 insert,update,delete 语句
一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)
1、原子性:事务必须是原子工作单位,对于其数据修改,要么全部执行,要么全都不执行
2、一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性;事务结束时,所有的内部数据结构都必须是正确的
3、隔离性:由于事发所作的修改必须与任何其他并发事务所作的修改隔离。这称为可串行性,因为他能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同
4、持久性:事务完成之后,他对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持
13、Mysql主从复制
1、主从服务器分别作以下操作:1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin?? //[必须]启用二进制日志
server-id=1 ? ? ?//[必须]服务器唯一ID,默认是1,一般取IP最后一段
3、修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin?? //[不是必须]启用二进制日志
server-id=2 ? ? ?//[必须]服务器唯一ID,默认是1,一般取IP最后一段
4、重启两台服务器的mysql
5、在主服务器上建立帐户并授权slave
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';
6、登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
| File???????????? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |????? 308 |????????????? |????????????????? |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
7、配置从服务器Slave:
mysql>change master to master_host='192.168.145.222',
master_user='mysync',
master_password='q123456',
master_log_file='mysql-bin.000004',
master_log_pos=308;
Mysql>start slave; //启动从服务器复制功能
8、检查从服务器复制功能状态:
mysql> show slave status\G
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
9、主从复制用到的命令
SHOW MASTER STATUS
#启动从库
Start slave
#停止从库
Stop slave
#查看从库状态
Show slave status
10、主从复制遇到的问题
不是两个yes
20分钟断开
11、主从复制主键冲突
auto_increment_offset 从1开始
auto_increment_increment 增长2
14、mysql优化,读写分离如何实现?
mysql优化前面已经总结了。主要说下读写分离,当我们的数据量很大时,数据库服务器的压力变大,这时候我们需要从架构方面来解决这一问题,在一个网站中读的操作很多,写的操作很少,这时候我们需要配置读写分离,把读操作和写操作分离出来,最大程度的利用好数据库服务器。读写分离的实现原理就是在执行SQL语句的时候,判断到底是读操作还是写操作,把读的操作转向到读服务器上(从服务器,一般是多台),写的操作转到写的服务器上(主服务器,一般是一台,视数据量来看)。当然为了保证多台数据库数据的一致性,需要主从复制。主从复制的实现原理是:mysql中有一种日志,叫做bin日志(二进制日志),会记录下所有修改过数据库的sql语句。主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后从服务器读取这个bin日志,把该日志的内容保存到自己中继日志里面,从服务器再把中继日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。