郑炎青吧 关注:6贴子:80
  • 0回复贴,共1

快要结束课程培训了!回归理论--mysql优化

只看楼主收藏回复

为什么我们要做mysql优化?
答:因为mysql在存取数据的时候会操作到I/O操作,网站的并发量一大,I/O操作就会变大,服务器的相应性能就会跟不上,为了给客户更好的体验,我们一般会使用memcache作为缓存层减轻数据库的压力,但是还是有一部分数据要去数据库提取,像用户登陆的信息比对等,那么我们就有必要对mysql进行优化


怎么进行mysql优化?
答:在建表的时候我们要有预见性,表的水平长度不宜过长,一旦过长就会提取很多无用的信息,就会增加无用的提取信息的时长.这时候我们就要区分好数据的冷热性,将冷的数据和热的数据分开建表
另外,我们在建表的时候要考虑字段类型,一般合适就好不宜过大,能用smallint就不要用int,能用char的就不要用varchar
还用储存的引擎,一般用的是myisam和innoDB
除了建表,我们还可以从mysql自身的缓存和索引考虑
还有就是架构上,由于我们大多数公司的业务都是读取数据居多,写入数据的少.所以我们可以从msyql服务器架构上采用读写分离,我们一般叫一主拖多从
再有就是我们程序员的经验上了,对于mysql语句的理解,在代码层面上写出合理的sql语句,提高查询的速度


什么是存储引擎?
就是以一定的数据格式存储数据,我们一般常用的存储引擎是msyql的myisam和innoDB


什么是事务?
这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
概念有些太抽象了,我用一个例子来说明,小明和小花进行一次转账的业务,小明向小花转账100块钱,此时小明账户的钱减100,小花账户的钱加100.完成后两个人账户的总和与之前的总和不变,这就是一次事务,他们两都不知道对方账户有多少钱,并且小明和小花是单独的个体
事务具备的ACID四个特性:原子性,一致性,隔离性,持久性


mysiam和innoDB有什么区别
从保存数据上 mysiam使用三部分表结构,表数据,表索引保存数据,而innoDB是从两部分保存数据,数据和索引是放在同一空间里
myisam不支持事务,innoDB支持事务
myisam支持表锁,innoDB支持行锁
myisam不支持外键,innoDB支持外键
myisam支持全文索引,innoDB不支持全文索引


什么是2k38y问题?
保存时间戳的unix系统是32位,int类型能保存42亿字节,这个数值从1970年到2038年刚好溢出,就会出现负值的情况,我们从php5.3开始就提供了一个DateTime类来应对2038问题了


什么是索引?
索引在我们生活中无处不在,我们书本上的索引页,公交车的站牌,wc的路标,都是让我们快速找到我们需要查找到的目标,索引就是能提供快速查找内容的数据结构


mysql如何使用索引?
当我们在做mysql查询的时候,我们会先判断where语句中的字段是否有索引,如果有索引,则把对应的索引字段加入到内存中根据索引快速定位到数据,取出数据;如果没有索引,将进行全表检索


回复
1楼2017-12-13 23:05