当前位置: 首页 > news >正文

三乡网站建设常德哪里有做网站

三乡网站建设,常德哪里有做网站,个人网站怎么设计,你做的网站可视区域多少钱索引 索引的概念 索引是一个排序的列表#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址#xff08;类似于C语言的链表通过指针指向数据记录的内存地址#xff09;。 使用索引后可以不用扫描全表来定位某行的数据#xff0c;而是先通过索引表找…索引 索引的概念 索引是一个排序的列表在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址类似于C语言的链表通过指针指向数据记录的内存地址。 使用索引后可以不用扫描全表来定位某行的数据而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据因此能加快数据库的查询速度。 索引就好比是一本书的目录可以根据目录中的页码快速找到所需的内容。 索引是表中一列或者若干列值排序的方法。 建立索引的目的是加快对表中记录的查找或排序。 索引的作用* 1.设置了合适的索引之后数据库利用各种快速定位技术能够大大加快查询速度这是创建索引的最主要的原因。 2.当表很大或查询涉及到多个表时使用索引可以成千上万倍地提高查询速度。 3.可以降低数据库的IO成本并且索引还可以降低数据库的排序成本。 4.通过创建唯一性索引可以保证数据表中每一行数据的唯一性。 5.可以加快表与表之间的连接。 6.在使用分组和排序时可大大减少分组和排序的时间。 7.建立索引在搜索和恢复数据库中的数据时能显著提高性能。 索引的副作用 1.索引需要占用额外的磁盘空间。         对于 MyISAM 引擎而言索引文件和数据文件是分离的索引文件用于保存数据记录的地址。         而 InnoDB 引擎的表数据文件本身就是索引文件。 2.更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间这是由于索引本身也需要更新。因此理想的做法是仅仅在常常被搜索的列以及表上面创建索引。 创建索引的规则 索引本身会消耗系统资源在有索引的情况下数据库会先进行索引查询然后定位到具体的数据行 如果索引使用不当反而会增加数据库的负担 1.表的主键、外键必须有索引。因为主键具有唯一性外键关联的是主表的主键查询时可以快速定位 2.记录数超过300行的表应该有索引。如果没有索引每次查询都需要把表遍历一遍会严重影响数据库的性能 3.经常与其他表进行连接的表在连接字段上应该建立索引。多表查询经常使用建立索引可以更加方便 4.唯一性太差的字段不适合建立索引。字段经常发生改变索引会发生改变 5.更新太频繁地字段不适合创建索引。索引发生改变 6.经常出现在 where 子句中的字段特别是大表的字段应该建立索引。 7.在经常进行 GROUP BY、ORDER BY 的字段上建立索引 8.索引应该建在选择性高的字段上。 9.索引应该建在小字段上对于大的文本字段甚至超长字段不要建索引。 索引的分类 普通索引 最基本的索引没有唯一性之类的限制 创建方式1CREATE INDEX 索引名 ON 表名 (列名[(length)]); #(列名(length))length是可选项下同。如果忽略 length 的值则使用整个列的值作为索引。如果指定使用列的前 length 个字符来创建索引这样有利于减小索引文件的大小。在不损失精确性的情况下长度越短越好。 注索引名建议以“_index”结尾。create index 索引名 on 表名 (字段(LEN)); 示例 对name创建普通索引 create index name_index on kgc (name);创建方式2修改表方式创建 ALTER TABLE 表名 ADD INDEX 索引名 (列名);示例 alter table kgc add index phone_index(phone);创建方式3创建表的时候指定索引 CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,.....,UNIQUE 索引名 (列名));示例 create table kgc1 (id int(10),name varchar(10),cardid int(18),phone int(11),address varchar(50),index name_index(name)); 唯一索引  与普通索引类似区别是唯一索引列的每个值都唯一。唯一索引允许有空值注意和主键不同 如果是用组合索引创建则列值的组合必须唯一。添加唯一键将自动创建唯一索引       直接创建唯一索引 CREATE UNIQUE INDEX 索引名 ON 表名(列名);示例 create unique index id_index on kgc(id);修改表方式创建唯一索引 ALTER TABLE 表名 ADD UNIQUE 索引名 (列名);示例 alter table kgc add unique cardid_index(card);创建表的时候指定唯一索引 CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...],UNIQUE 索引名 (列名));示例 create table kgc1 (id int(10),name varchar(10),cardid int(18),phone int(11),address varchar(50),unique id_index(id));组合索引 可以是单列上创建的索引也可以是在多列上创建的索引。 需要满足最左原则因为 select 语句的 where 条件是依次从左往右执行的 所以在使用 select 语句查询时 where 条件使用的字段顺序必须和组合索引中的排序一致否则索引将不会生效。 直接创建组合索引 CREATE index 索引名 on 表名字段1,字段2,字段3create index name_cardid_phone_index on kgc(name,cardid,phone);修改表方式创建组合索引 alter table 表名 add index 索引名 (字段1,字段2,字段3,...); alter table kgc add index name_phone_cardid_index(name,phone,cardid);创建表的时候指定组合索引CREATE TABLE 表名 (列名1 数据类型,列名2 数据类型,列名3 数据类型,INDEX 索引名 (列名1,列名2,列名3)); 创建表的时候创建组合索引 CREATE TABLE 表名 (列名1 数据类型,列名2 数据类型,列名3 数据类型,INDEX 索引名 (列名1,列名2,列名3)); select 查询时 where 语句中的条件字段 要与组合索引的字段排列顺序一致最左原则 select * from 表名 where 列名1... AND 列名2... AND 列名3...;示例 create table kgc1 (id int NOT NOLL,name char(10),index name_index (id,name)); 主键索引 是一种特殊的唯一索引必须指定为“PRIMARY KEY”。一个表只能有一个主键不允许有空值。 添加主键将自动创建主键索引 修改表方式创建主键索引 ALTER TABLE 表名 ADD PRIMARY KEY (列名); 示例 alter table kgc add primary key(id);创建表的时候指定索引 CREATE TABLE 表名 ([...],PRIMARY KEY (列名)); 示例 create table kgc1 (id int(10),name varchar(10),cardid int(18),phone int(11),address varchar(50),remark text,primary key(id)); 全文索引 适合在进行模糊查询的时候使用可用于在一篇文章中检索文本信息。在 MySQL5.6 版本以前 FULLTEXT 索引仅可用于 MyISAM 引擎在 5.6 版本之后 innodb 引擎也支持 FULLTEXT 索引。全文索引可以在 CHAR、VARCHAR 或者 TEXT 类型的列上创建   直接创建索引 CREATE FULLTEXT INDEX 索引名 ON 表名 (列名);示例 create fulltext index remark_index on kgc(remark);修改表方式创建 create table 表名 add fulltest 索引名字段名; 示例 alter table kgc add fulltext remark_index(remark);创建表的时候指定索引 CREATE TABLE 表名 (字段1 数据类型[,...],FULLTEXT 索引名 (列名)); #数据类型可以为 CHAR、VARCHAR 或者 TEXT 使用全文索引查询 SELECT * FROM 表名 WHERE MATCH(列名) AGAINST(查询内容); 查看索引 show index from 表名; show keys from 表名;各字段的含义如下 Table表的名称。 Non_unique如果索引不能包括重复词则为 0如果可以则为 1。 Key_name索引的名称。 Seq_in_index索引中的列序号从 1 开始。 Column_name列名称。 Collation列以什么方式存储在索引中。在 MySQL 中有值‘A’升序或 NULL无分类。 Cardinality索引中唯一值数目的估计值。 Sub_part如果列只是被部分地编入索引则为被编入索引的字符的数目。如果整列被编入索引则为 NULL。 Packed指示关键字如何被压缩。如果没有被压缩则为 NULL。 Null如果列含有 NULL则含有 YES。如果没有则该列含有 NO。 Index_type用过的索引方法BTREE, FULLTEXT, HASH, RTREE。 Comment备注。 删除索引 直接删除索引 DROP INDEX 索引名 ON 表名; drop index name_index on kgc;修改表方式删除索引 ALTER TABLE 表名 DROP INDEX 索引名; alter table kgc drop index name_index;删除主键索引 ALTER TABLE 表名 DROP PRIMARY KEY;alter table kgc drop primary key;索引的优化* 索引加速——》便于客户端获取数据提升用户体验感 减少mysql 服务器的压力 索引就是一种MySQL的优化从两个方向考虑1、哪些字段/场景适合创建索引2、哪些字段/场景不适合 事务 事务的概念 事务是一种机制、一个操作序列包含了一组数据库操作命令并且把所有的命令作为一个整体一起向系统提交或撤销操作请求即这一组数据库命令要么都执行要么都不执行。 事务是一个不可分割的工作逻辑单元在数据库系统上执行并发操作时事务是最小的控制单元。 事务适用于多用户同时操作的数据库系统的场景如银行、保险公司及证券交易系统等等。 事务通过事务的整体性以保证数据的一致性。 事务能够提高在向表中更新和插入信息期间的可靠性。 事务是一个操作序列这些操作要么都执行要么都不执行是一个不可分割的工作单位 事务的ACID特点 ACID是指在可靠数据库管理系统DBMS中事务(transaction)应该具有的四个特性是可靠数据库所应具备的几个特性 原子性 指事务是一个不可再分割的工作单位事务中的操作要么都发生要么都不发生。 事务是一个完整的操作事务的各元素是不可分的。 事务中的所有元素必须作为一个整体提交或回滚。 如果事务中的任何元素失败则整个事务将失败。 案例 A给B转帐100元钱的时候只执行了扣款语句就提交了此时如果突然断电A账号已经发生了扣款B账号却没收到加款在生活中就会引起纠纷。这种情况就需要事务的原子性来保证事务要么都执行要么就都不执行。 一致性 指在事务开始之前和事务结束以后数据库的完整性约束没有被破坏。 当事务完成时数据必须处于一致状态。 在事务开始前数据库中存储的数据处于一致状态。 在正在进行的事务中数据可能处于不一致的状态。 当事务成功完成时数据必须再次回到已知的一致状态。 案例 对银行转帐事务不管事务成功还是失败应该保证事务结束后表中A和B的存款总额跟事务执行前一致。 隔离性 指在并发环境中当不同的事务同时操纵相同的数据时每个事务都有各自的完整数据空间。 对数据进行修改的所有并发事务是彼此隔离的表明事务必须是独立的它不应以任何方式依赖于或影响其他事务。 修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据或者在另一个使用相同数据的事务结束之后访问这些数据。 也就是说并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的。 持久性 在事务完成以后该事务所对数据库所作的更改便持久的保存在数据库之中并不会被回滚。 指不管系统是否发生故障事务处理的结果都是永久的。 一旦事务被提交事务的效果会被永久地保留在数据库中 事务容易出现的问题* 当多个客户端并发地访问同一个表时可能出现下面的一致性问题 1脏读当一个事务正在访问数据并且对数据进行了修改 而这种修改还没有提交到数据库中 这时另外一个事务也访问这个数据然后使用了这个数据。2不可重复读指在一个事务内多次读同一数据。 在这个事务还没有结束时另外一个事务也访问该同一数据。 那么在第一个事务中的两次读数据之间由于第二个事务的修改 那么第一个事务两次读到的的数据可能是不一样的。 这样就发生了在一个事务内两次读到的数据是不一样的 因此称为是不可重复读。即不能读到相同的数据内容3幻读一个事务对一个表中的数据进行了修改这种修改涉及到表中的全部数据行。 同时另一个事务也修改这个表中的数据这种修改是向表中插入一行新数据 。那么操作前一个事务的用户会发现表中还有一个没有修改的数据行就好象发生了幻觉一样。4丢失更新两个事务同时读取同一条记录 A先修改记录B也修改记录B不知道A修改过 B提交数据后B的修改结果覆盖了A的修改结果。 事务的隔离级别决定了事务之间可见的级别 MySQL事务支持如下四种隔离用以控制事务所做的修改并将修改通告至其它并发的事务 1未提交读(Read UncommittedRU) 允许脏读即允许一个事务可以看到其他事务未提交的修改。2提交读(Read CommittedRC) 允许一个事务只能看到其他事务已经提交的修改未提交的修改是不可见的。防止脏读。3可重复读(Repeatable ReadRR)---mysql默认的隔离级别 确保如果在一个事务中执行两次相同的SELECT语句都能得到相同的结果不管其他事务是否提交这些修改。可以防止脏读和不可重复读。4串行读(Serializable)---相当于锁表 完全串行化的读将一个事务与其他事务完全地隔离。每次读都需要获得表级共享锁读写相互都会阻塞。可以防止脏读不可重复读取和幻读(事务串行化)会降低数据库的效率。mysql默认的事务处理级别是 repeatable read 而Oracle和SQL Server是 read committed 。 //事务隔离级别的作用范围分为两种 ● 全局级对所有的会话有效 ● 会话级只对当前的会话有效查询全局事务隔离级别 show global variables like %isolation%; SELECT global.tx_isolation;查询会话事务隔离级别 show session variables like %isolation%; SELECT session.tx_isolation;  SELECT tx_isolation;设置全局事务隔离级别 set global transaction isolation level read committed; set global.tx_isolationread-committed;   #重启服务后失效设置会话事务隔离级别 set session transaction isolation level repeatable read; set session.tx_isolationrepeatable-read; 总结在事务管理中原子性是基础隔离性是手段一致性是目的持久性是结果。 事务控制语句  BEGIN 或 START TRANSACTION显式地开启一个事务。 COMMIT 或 COMMIT WORK提交事务并使已对数据库进行的所有修改变为永久性的。 ROLLBACK 或 ROLLBACK WORK回滚会结束用户的事务并撤销正在进行的所有未提交的修改。 SAVEPOINT S1使用 SAVEPOINT 允许在事务中创建一个回滚点一个事务中可以有多个 SAVEPOINT“S1”代表回滚点名称。 ROLLBACK TO [SAVEPOINT] S1把事务回滚到标记点。#查看当前的隔离级别 show session variables like %isolation%;#修改隔离级别 set session transaction isolation level read committed;#使用 set 设置控制事务 SET AUTOCOMMIT0;                        #禁止自动提交 SET AUTOCOMMIT1;                        #开启自动提交Mysql默认为1 SHOW VARIABLES LIKE AUTOCOMMIT;        #查看Mysql中的AUTOCOMMIT值如果没有开启自动提交当前会话连接的mysql的所有操作都会当成一个事务直到你输入rollback|commit;当前事务才算结束。当前事务结束前新的mysql连接时无法读取到任何当前会话的操作结果。 如果开起了自动提交mysql会把每个sql语句当成一个事务然后自动的commit。 当然无论开启与否begin; commit|rollback; 都是独立的事务。#查看事务的自动提交功能是否开启 show variables like autocommit; 存储引擎 MyISAM 表支持 3 种不同的存储格式 静态(固定长度)表 静态表是默认的存储格式。静态表中的字段都是非可变字段这样每个记录都是固定长度的这种存储方式的优点是存储非常迅速容易缓存出现故障容易恢复缺点是占用的空间通常比动态表多。 动态表 动态表包含可变字段记录不是固定长度的这样存储的优点是占用空间较少但是频繁的更新、删除记录会产生碎片需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能并且出现故障的时候恢复相对比较困难。 压缩表 压缩表由 myisamchk 工具创建占据非常小的空间因为每条记录都是被单独压缩的所以只有非常小的访问开支。 常用存储引擎 InnoDB 支持事务、外键约束支持行级锁定在全表扫描时仍然表级锁定 读写并发能力较好在5.5版本才支持全文索引缓存能力较好可以减少磁盘IO的压力数据和索引是存储在一个文件中。 使用场景适用于一致性要求较高数据频繁更新高并发读写的业务场景。 MyISAM 不支持事务、外键约束只支持表级锁定 适合单独的查询或写入读写并发能力较差支持全文索引占用资源较小适合硬件资源相对比较差的服务器使用数据和索引是分开存储的。 使用场景适用于不需要事务处理单独的查询或插入数据的业务场景。 存储引擎的命令 #查看系统支持的存储引擎 show engines;#查看表使用的存储引擎 方法一 show table status from 库名 where name表名\G方法二 use 库名; show create table 表名;#修改存储引擎 方法一 通过 alter table 修改 use 库名; alter table 表名 engineMyISAM;示例 alter table member enginemyisam; show create table member;方法二 通过修改 /etc/my.cnf 配置文件指定默认存储引擎并重启服务 vim /etc/my.cnf ...... [mysqld] ...... default-storage-engineINNODBsystemctl restart mysql.service 注意此方法只对修改了配置文件并重启mysql服务后新创建的表有效已经存在的表不会有变更。方法三 通过 create table 创建表时指定存储引擎 use 库名; create table 表名(字段1 数据类型,...) engineMyISAM;示例: create table qzz(name varchar(10),age char(4)) enginemyisam; show create table qzz\G; InnoDB行锁与索引的关系 1 delete from t1 where id1;     如果id字段是主键innodb对于主键使用了聚簇索引会直接锁住整行记录。2 delete from t1 where nameaaa; 如果name字段是普通索引会先锁住索引的两行接着会锁住相应主键对应的记录。3 delete from t1 where age23; 如果age字段没有索引会使用全表扫描过滤这时表上的各个记录都将加上锁。
http://www.ihoyoo.com/news/111063.html

相关文章:

  • 最简单的网站开发工具wordpress一键生成app
  • 网站开发seo深圳兼职做网站
  • 找人做网站注意事项nivo slider wordpress
  • 哪些作弊网站公司网站建设会计分录
  • 深圳住房保障和建设局官网济南百度推广seo
  • 全国城建中心官方网站上海平台网站制作公司
  • 成都信用体系建设网站广东省建设部网站
  • 廊坊seo网站管理百度seo设置
  • 电商网站如何做seo本地wordpress 跳转
  • 门户网站 字体wordpress 增加域名
  • 手机网站外链怎么合肥网站开发培训学校
  • 制作的网站图片不显示曹县建设局网站
  • 公司网站建设的视频刚做优化的网站什么能更新
  • 网站建设带后台带微商城公司做的网站访问很慢
  • 电子商务网站建设含义WordPress文档转换
  • 微信商城网站怎么做的网站建设深圳给源码
  • 网站维护需要做什么学网页设计哪个培训学校好
  • 怎么建设个网站网站wordpress主题不分页
  • 传销公司做网站运营蜂鸟 网站建设
  • 网站注册费计入什么科目百度上做优化
  • 推荐几个用vue做的网站上海做征信服务的公司网站
  • 做义齿雕刻设备的网站网站关键词百度自然排名优化
  • 网站的文字被爬取了企业快速建站的公司
  • 网站建设地址 北京小程序 网站建设 app 开发
  • 网站建设是什么意思在哪些网站做推广
  • 做标签网站刷单做海报的专业网站
  • 电商网站建设基本流程成都软件公司排名
  • 金蝶软件公司简介seo经典案例分析
  • 免费正能量励志网站做网站自己买服务器吗
  • 东莞市网站建设分站98证书兼职网