十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件。
成都创新互联公司是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,成都移动机房,海外高防服务器,机柜大带宽、租用·托管,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。
环境介绍
硬件配置
请点击输入图片描述
软件环境
请点击输入图片描述
优化层级与指导思想
优化层级
MySQL数据库优化可以在多个不同的层级进行,常见的有:
SQL优化
参数优化
架构优化
本文重点关注:参数优化
指导思想
日志先行 -- 一个事务能否成功提交的关键是日志是否成功落盘,与数据没有太大的关系;也就是说对写的优化可以表述为各方面的资源向写操作倾斜。
瓶颈分析 -- 通过show global status 的各个计数器的值基本上就能分析出当前瓶颈所在,再结合一些简单的系统层面的监控工具如top iostat 就能明确瓶颈。
整体性能是“读”“写”之间的再平衡。
根据你要招的php是什么水平的,10k以下,简单的php基础,以及session,cookie原理,数据库优化,使用过的框架,会不会linux,版本控制器会哪些等,10k到15k加强一些知识,比如表的连接的用法,大数据的处理,缓存会哪些,linux里面再加深一些知识,算法上面的也可以问。15k-20k问一些分库分表如何实现,进程与线程,找一些活动比如抢购,如何实现等。总之与你想招的人的岗位有关系,总不能给人家5k,问人家你能不能搭架构吧
这个一般都比较简单,我列出下面几点你可以作为参考:
数据库的增删改查,基本会使用,深入点会问你怎么优化sql语句和配置项。
简单的数据库表设计
php的函数熟悉情况,数组和字符串函数的了解程度
session的使用场景
js的异步请求(一般会考jquery),dom对象的获取和简单操作。
最后就是php框架,是否了解mvc思想,和会使用哪些框架
基本就这些了,深入的缓存一般不会考的,比如memcache,nosql之类的
1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from
table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含
where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。MyISAM 是表所
innodb是行锁
5.LOAD TABLE FROM MASTER(从主负载表)操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update
table set num=1 where name like “"2%”
6.InnoDB 支持事物
选择存储引擎 根据实际情况选择。
一般情况下如果查询多建议使用myIsam 。
如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。
优化MYSQL数据库的方法:
1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM
2,使用join代替子查询
3,使用联合(UNION)来代替手动创建的临时表
4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)
5,适当建立索引(如何建立索引?索引的利与弊?)
6,优化sql语句
7,explain可以看到mysql执行计划
8,分表(垂直分表,水平分表?)
9,数据库主从