MySQL优化-MySQL数据表分区

程序员日记      2019-08-18
定义分区是根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的对象,可以独立处理,可以作为表的一部分进行处理。分区对应用来说是完全透明的,不影响应用的业务逻辑。MYSQL的分区的两种形式水平分区水平分区(HorizontalPartitioning)这种形式分区是对表的行进行分区,所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。举个例子,十年的订...
标签:
11 人看过

MySQL优化-查询语句优化

程序员日记      2019-08-18
1.尽量少使用!=,<>,!<、!>,NOTLIKE等逆向操作符应尽量避免在WHERE子句中使用!=,<>,!<、!>,NOTLIKE等逆向操作符,否则将引擎放弃使用索引而进行全表扫描。 2.尽量少对字段进行null值判断否则将导致引擎放弃使用索引而进行全表扫描如selectidfromtwherenameisnull 可以在name上设置默认值'',确保表中name列没有null值,然后这样查询: selectidf...
标签:
11 人看过

MySQL优化-索引设计优化

程序员日记      2019-08-18
索引设计优化1.单表索引建议控制在5个以内2.单索引字段数不允许超过5个字段超过5个时,实际已经起不到有效过滤数据的作用了3.禁止在更新十分频繁、区分度不高的字段上建立索引比如状态值,性别值等。更新会变更B+树,更新频繁的字段建立索引会大大降低数据库性能“性别”这种区分度不大的属性,建立索引是没有什么意义的,不能有效过滤数据,性能与全表扫描类似4.建立组合索引,必须把区分度高的字段放在前面,能够更加有效的过滤数据5.WHERE语句常用字段建立索引6.ORDERBY语句常用字段建立索引当我们使用O...
标签:
6 人看过

MySQL优化-字段设计优化

程序员日记      2019-08-18
字段设计优化1.字段必须设计为非空(NOTNULL)字段,理由如下1).NULL的列使索引/索引统计/值比较都更加复杂,对MySQL来说更难优化2).NULL这种类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多空字段的时候,数据库的处理性能会降低很多3).NULL值需要更多的存储空,无论是表还是索引中每行中的null的列都需要额外的空间来标识4).对NULL的处理时候,只能采用ISNULL或ISNOTNULL,而不能采用=、in、<、<>、...
标签:
4 人看过

MySQL优化-数据表设计优化

程序员日记      2019-08-18
数据表优化1.使用InnoDB存储引擎早年有关于存储引擎具体是选择InnoDB还是MyISAM的选择,但是随着不断的完善,现在不存在这个问题了,从各个方面赶超MyISAM,也是MySQL默认使用的存储引擎。2.必须使用UTF8字符集UTF8MB4万国字符集,无需转码,无乱码风险,节省空间3.数据表、数据字段必须加入中文注释 不加注释的话2-3年以后你再回头看看你的表看认识不认识。4.尽可能少甚至不使用存储过程、视图、触发器、Event高并发大数据的互联网业务,架构设计思路是“解放数据库...
标签:
9 人看过

MySQL优化-数据库设计三大范式及逆范式的思考

程序员日记      2019-08-17
第一范式(1NF)字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的,不可再分;第二范式(2NF)要求实体的属性完全依赖于主键。所谓完全依赖是指不能存在仅依赖主键一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是属性完全依赖主键。第三范式(3NF)满足第三范式(3NF)必须先满足第二范式(2NF)。简而言...
标签:
12 人看过

MySQL优化-配置文件优化及硬件优化

程序员日记      2019-08-17
服务器硬件对MySQL性能的影响磁盘寻道能力(磁盘I/O),以目前高转速SCSI硬盘(7200转/秒)为例,这种硬盘理论上每秒寻道7200次,这是物理特性决定的,没有办法改变。 MySQL每秒钟都在进行大量、复杂的查询操作,对磁盘的读写量可想而知。所以,通常认为磁盘I/O是制约MySQL性能的最大因素之一,对于日均访问量在100万PV以上的Discuz!论坛,由于磁盘I/O的制约,MySQL的性能会非常低下!解决这一制约因素可以考虑以下几种解决方案:  1.使用RA...
标签:
8 人看过

MySQL事务

程序员日记      2019-08-17
事务具有4个特性:1.原子性(Atomicity)事务必须是原子工作单元,事务中的操作要么全部执行,要么全都不执行,不能只完成部分操作。原子性在数据库系统中,由恢复机制来实现。2.一致性(Consistency)事务开始之前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。数据库一致性的定义是由用户负责的。例如,在银行转账中,用户可以定义转账前后两个账户金额之和保持不变。3.隔离性(Isolation)系统必须保证事务不受其他并发执行事务的影响,即当多个事务同时运行时,各事务之间...
标签:
8 人看过

MySQL用户权限管理(授权给用户,删除用户授权)

程序员日记      2019-08-17
授权给用户新建的MySQL用户,必须给它授权,可以用GRANT语句来实现对新建用户的授权。语法格式GRANT权限类型[(列名)][,权限类型[(列名>)]]ON对象权限级别TO用户名[IDENTIFIED]BY[PASSWORD]口令[WITHGRANTOPTION]|MAX_QUERIES_PER_HOUR次数|MAX_UPDATES_PER_HOUR次数|MAX_CONNECTIONS_PER_HOUR次数|MAX_USER_CONNECTIONS次数说明1.列名可选项。用于指定权限要...
标签:
8 人看过

MySQL用户管理(创建用户,修改用户信息,删除用户)

程序员日记      2019-08-17
创建用户可以使用CREATEUSER语句来创建一个或多个MySQL账户,并设置相应的口令。语法结构CREATEUSER用户名[IDENTIFIED]BY[PASSWORD]密码说明1.用户名指定创建用户账号,格式为'user_name'@'host_name'。这里user_name是用户名,host_name为主机名,即用户连接MySQL时所在主机的名字。若在创建的过程中,只给出了账户的用户名,而没指定主机名,则主机名默认为“%”,表示一组主机。2.PASSWORD可选项,用于指定散列口令,即...
标签:
6 人看过