MYSQL汇合

1、MYSQL统计不重复商品个数【120W数据】
select DISTINCT(goods_name)as all_distince from goods 10个 11s多
select count(*) from goods group by goods_name 14s多
select count(*) as all_a from goods 120万 7s多
select DISTINCT(goods_name)as all_distince from goods 10个 11s多
select * from goods group by goods_name 14s多
select * from goods union select * from goods 236.849s
select goods_name from goods union select goods_name from goods 32.501s
2、char和varchar的区别:
1、char是固定长度,varchar是可变长度
2、char的查询速度快于varchar
3、varchar更节省空间
4、char会自动补齐
5、char的储存效率比varchar的效率更高
3、 varchar20可以存储几个汉字
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小 是65532字节
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。
4、 查看MYSQL运行进程
show processlist
5、联合查询和链接(左,右,内)查询
子查询:必须起别名
union去重必须值一样才能去重
查询不缓存:sql_no_catch
create index index_name
alert table
6、 mysql释放内存:optimize
去重:distinct
7、 查null值 : is null
非null值: is not null
8、分表之后如何稳定id,以及数据插入那张表中
1、查询mrg_myisam这张表
2、查询视图
3、查询所有的数据,取出最大的id
4、可以单独创建一张表,记录id
5、可以把id存在redis或者memcache中
6、可以单独出来一个服务(接口),用来获取id和插入哪张表
9、 分表之后如何查询所有数据
1、union all查询
2、视图
3、使用mrg_myisam引擎
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语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。
















 











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值