同步操作将从 Java精选/Ebooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
如果mysql5.6以下版本,使用SHOW VARIABLES语句来确定MySQL数据库是否支持分区:
show variables like '%partition%';
如果查询结果显示Empty,表示不支持分区,反之have_partintioning的值为YES,表示支持分区。但是需注意的此方式只针对mysql5.6以下版本。
如果mysql5.6及以上版本,需要使用show plugins;查询命令。查询方法显示所有插件,有红色部分(如下)的话,表示支持分区。
partition | ACTIVE | STORAGE ENGINE | NULL | GPL
插入缓冲(insert buffer)
二次写(double write)
自适应哈希索引(ahi)
预读(read ahead)
1、如果条件中有or,即使其中有条件带索引也不会使用,如果使用or想让索引生效,只能将or条件中的每个列都加上索引。
2、对于多列索引,不是使用的第一部分,则不会使用索引。
3、以“%”开头的LIKE语句,模糊匹配。
4、数据类型出现隐式转化,如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。(如varchar不加单引号的话可能会自动转换为int型)
5、如果mysql估计使用全表扫描要比使用索引快,则不使用索引。
TINYTEXT:256 bytes
TEXT:65,535 bytes(64kb)
MEDIUMTEXT:16,777,215 bytes(16MB)
LONGTEXT:4,294,967,295 bytes(4GB)
行级锁的优点
1)在许多线程请求访问不同的行时减少冲突锁。
2)事务回滚时减少改变数据。
3)可以长时间对单一的行数据加锁。
行级锁的缺点
1)比页级或表级锁定占用更多的内存。
2)当大量表中使用行级锁时,比页级锁或表级锁占用更多的内存。
3)如果需要频繁对大部分数据使用GROUP BY分组操作或者需要频繁扫描整个表时,明显比其它锁慢很多。
4)使用高级别锁时更方便的支持各种不同的类型应用程序,因为这种锁开销比行级锁要小很多。
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
可以用一个命令对象来调用存储过程。
1、是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM;
2、如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB
3、系统奔溃后,MyISAM恢复起来更困难,能否接受;
4、MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。
造成SQL注入的原因是程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。
防止SQL注入的方式:
1、开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置。
2、执行sql语句时使用addslashes进行sql语句转换。
3、Sql语句书写尽量不要省略双引号和单引号。
4、过滤掉sql语句中的一些关键词:update、insert、delete、select、*。
5、提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。
最左前缀原则就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。
当创建一个组合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。。
1、查看是否涉及多表和子查询,优化Sql结构,如去除冗余字段,是否可拆表等。
2、优化索引结构,看是否可以适当添加索引。
3、数量大的表,可以考虑进行分离/分表(如交易流水表)。
4、数据库主从分离,读写分离。
5、explain分析sql语句,查看执行计划,优化sql。
6、查看mysql执行日志,分析是否有其他方面的问题。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。