Mysql安装、配置、优化

一: MYSQL安装和基本配置

在linux上安装,能够用包管理工具来安装,比較简单:

RedHat 系列:yum -yinstall  mysql mysql-server 

Debian系列:sudo apt-getinstall  mysql mysql-server

 

安装之后不知道mysql装到哪了怎么办,用whereis mysql 命令来找一下。先找到mysql的默认配置文件。一般来说,安装后有这么几个备选的配置:my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf

 

就2014年的机器配置来说,咱们直接用my-huge.cnf。把my-huge.cnf 拷贝到/etc/下,改名my.cnf。配置文件就有了,然后启动mysql: /etc/init.d/mysqld start 。

 

安装之后默认的帐号是root, password为空。咱们要做的第一件事是改rootpassword。

进入mysql:mysql -uroot -p

选择数据库: use mysql

改password: UPDATE user SET Password = PASSWORD('xxxx') WHERE user = 'root';

刷新权限: FLUSH PRIVILEGES;

 

如今数据库装好了,帐号和权限也设置了,是不是就能够使用了呢,还要检查几个配置。打开配置文件 vim /etc/my.cnf

skip-networking 要关闭。

bind-address = 127.0.0.1 这一行要关闭或者改动成同意的IP

skip-name-resolve 禁止dns解析,仅仅能用IP连,这个能够打开。

       假设你的mysql经过一段时间执行,挺过了訪问高峰,咱们再来检查一下配置是否合适。以下说的配置,都必须是在执行一段时间后检查才有意义。假设刚启动没多久,mysql的执行状态没有代表性,不能作为參考。检查配置參数也没意义

Mysql的优化

一、mysql的优化思路

mysql的优化分为两方面:

1. 服务器使用前的优化

2. 服务使用中的优化

二、mysql的基础优化步骤

1. 硬件级优化

(1). 最好mysql自己使用一台物理服务器

(2). 内存和CPU方面,根据需求给予mysql服务器足够大的内存和足够多的CPU核数

(3). 避免使用Swap交换分区–交换时从硬盘读取的它的速度很慢,有的DBA安装系统时就不装swap分区

(4). 如果是mysql主库,硬盘可以选用比较好的高速硬盘,系统用SSD固态硬盘,数据盘用sas替代sata硬盘,将操作系统和数据分区分开

(5). mysql产生的日志与数据库也放到不同的磁盘分区上面

(6). mysql数据库硬盘格式化时,可以指定更小的硬盘块

(7). 关于做RAID方面,主库尽量做成RAID10,既提高了数据的读写速度也提到了数据的安全性

(8). 服务器双线双电,保障服务器运行稳定,不会因为突然断电影响业务和损坏磁盘数据

2. mysql数据库设计优化

(1). 根据需求选择正确的存储引擎,比如说读的特别猛就用MySAM,如果对事务性要求高就用InnoDB

  (2). 设置合理的字段类型和字段长度,比如说你这个字段就20多个字段你设置成VARCHAR(255)就是对磁盘空间的浪费

(3). 默认值尽可能的使用 NOT NULL,如果空值太多对mysql的查询会有影响,尤其是在查询语句编写上面

(4). 尽量少的使用VARCHAR,TEXT,BLOB这三个字段

(5). 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]

(6). 不要滥用索引,大表索引,小表不索引

(7). 表的设计合理化(符合3NF)

3. 架构优化

(1). 前端用memcached,redis等缓存分担数据库压力

(2). 数据库读写分离,负载均衡

(3). 数据库分库分表

(4). 存储可采取分布式

4. 后期优化

主要是多观察,后期就是维护工作了,观察服务器负载是需要添加硬件了,还是有语句有问题啊,还是参数要修改了。

5. 查询优化(摘抄老师的)

(1). 使用慢查询日志去发现慢查询。
(2). 使用执行计划去判断查询是否正常运行。
(3). 总是去测试你的查询看看是否他们运行在最佳状态下 –久而久之性能总会变化。
(3). 避免在整个表上使用count(*),它可能锁住整张表。
(4). 使查询保持一致以便后续相似的查询可以使用查询缓存。
(5). 在适当的情形下使用GROUP BY而不是DISTINCT。
(6). 在WHERE, GROUP BY和ORDER BY子句中使用有索引的列。
(7). 保持索引简单,不在多个索引中包含同一个列。

(8). 有时候MySQL会使用错误的索引,对于这种情况使用USE INDEX。
(9) 检查使用SQL_MODE=STRICT的问题。
(10). 对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR.
(11). 为了 避免在更新前SELECT,使用INSERT ON DUPLICATE KEY或者INSERT IGNORE ,不要用UPDATE去实现。
(12). 不要使用 MAX,使用索引字段和ORDER BY子句。
(13). 避免使用ORDER BY RAND().

(14)。LIMIT M,N实际上可以减缓查询在某些情况下,有节制地使用。
(15)。在WHERE子句中使用UNION代替子查询。
(16)。对于UPDATES(更新),使用 SHARE MODE(共享模式),以防止独占锁。
  (17)。在重新启动的MySQL,记得来温暖你的数据库,以确保您的数据在内存和查询速度快。
  (18)。使用DROP TABLE,CREATE TABLE DELETE FROM从表中删除所有数据。
  (19)。最小化的数据在查询你需要的数据,使用*消耗大量的时间。
  (20)。考虑持久连接,而不是多个连接,以减少开销。
  (21)。基准查询,包括使用服务器上的负载,有时一个简单的查询可以影响其他查询。
  (22)。当负载增加您的服务器上,使用SHOW PROCESSLIST查看慢的和有问题的查询。
  (23)。在开发环境中产生的镜像数据中 测试的所有可疑的查询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值