课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
MySQL服务器的创建与优化是后端编程开发程序员在学习软件编程的时候需要重点掌握的服务器开发技术之一,而今天我们就一起来了解一下,MySQL服务器的性能优化包含了哪些内容。
一、创建表时的性能优化
1.永远为每张表设置一个ID
每张表都应该设置一个ID字段为主键,该主键应为INT或UNSIGNED类型,并设置上自动增加的AUTO_INCREMENT标志。因为使用VARCHAR类型的主键,会使得性能下降。
这里,只有一个情况是例外,那就是“关联表”的“外键”,也就是说,这个表的主键,通过若干个别的表的主键构成。我们把这个情况叫做“外键”。比如:有一个“学生表”有学生的ID,有一个“课程表”有课程ID,那么,“成绩表”就是“关联表”了,其关联了学生表和课程表,在成绩表中,学生ID和课程ID叫“外键”其共同组成主键。
2.为搜索字段建索引
3.使用ENUM而不是VARCHAR
ENUM类型是非常快和紧凑的。在实际上,其保存的是TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。
如果你有一个字段,比如“国家”,你知道这些字段的取值是有限而且固定的,那么,你应该使用ENUM而不是VARCHAR。
ENUM是MySQL数据库特有的字段类型,使用后会影响迁移到其它数据库。所以,如果以后又改数据库的情况,一定要慎用。
4.尽可能的使用NOTNULL
应该总是让你的字段保持NOTNULL,因为这样节省空间(NULL也是需要空间的)。
5.把IP地址存成UNSIGNEDINT
如果使用整形来存放IP而不是VARCHAR(15)字段,节省了很多的空间(需要写一个IP转换的函数)。
二、设计表时的性能优化
1.选择正确的存储引擎
MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM对于SELECTCOUNT(*)这类的计算是超快无比的。
InnoDB的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比MyISAM还慢。他是它支持“行锁”,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。
2.固定长度的表会更快
表中没有如下类型的字段:VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个表就不是“固定长度静态表”了,这样,MySQL引擎会用另一种方法来处理。
固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。而如果字段不是定长的,那么,每一次要找下一条的话,需要程序找到主键。
并且,固定长度的表也更容易被缓存和重建。不过,的副作用是,固定长度的字段会浪费一些空间,因为定长的字段无论你用不用,他都是要分配那么多的空间。
使用“垂直分割”技术(见下一条),你可以分割你的表成为两个一个是定长的,一个则是不定长的。
3.垂直分割
“垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。