索引的出现其实就是为了提高查询的效率,就想书的目录一样索引常用的数据结构有哈希表、有序数组、搜索树哈希表是一种以键值存数据的结构,哈希的思路,把值放在数组里,用一个哈希函数把key换成一个确定的位置,然后把value放在数组的这个位置。
事务就是保证一组数据库操作,要么全部成功,要么全部失败。MySQL中事务支持都是在引擎层实现的MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务隔离级别出现的原因是,当数据库上有多个事务同时执行的时候,就可能出现脏读(dirtyread)、不可重复读(non-repeatableread)、幻读(phantomread)的问题,为了解决这些问题,就有了“隔离级别”的概念。隔离级别越高,
安全、业务安全、业务安全体系
1,大家在使用MySQL的时候咱们团队的标准是统一2,让大家知道如何写出逻辑正确的SQL语句来实现业务目标3,让大家能建立比较合理的索引4,让大家更快更精准的定位和解决问题内容围绕事务、索引、锁等内容为主线,希望咱们能对MySQL有个从点到先,再到面,形成自己的MySQL知识网络
一条查询语句一般经过连接器、分析器、优化器、执行器等模块,最后到达存储引擎。一条更新语句也需要经连接器连接数据库、分析器会通过词法和语法解析知道这是一条更新语句、优化器决定要使用的索引、然后执行器执行负责具体执行,找到这一行,然后更新。更新语句和查询语句不一样的是,更新流程还涉及两个重要的日志模块,redolog(重做日志)和binlog(归档日志)。
MySQL由Server层和引擎层两部分组成。Server层包括连接器、查询缓存、分析器、优化器、执行器。所有的内置函数(如日期、时间、数学和加密函数)、所有跨存储引擎(存储过程、触发器、视图)的功能都在这层实现。存储引擎层负责数据的存储和提取。支持InnoDB、MyIsAM、Menory等诸多存储引擎,MySQL5.5.5版本开始成为默认存储引擎连接器:连接器负责跟客户端建立连接、获取权限、维持
秒杀系统设计方案一、秒杀系统架构设计关键点1.两个问题,一个备选方案(1)秒杀其实主要解决两个问题一个是并发读,并发读的核心理念是尽量减少用户到服务端来“读”数据,或者读更少的数据。一个是并发写,并发写我们在数据库层面独立出来一个库,做特殊的处理。(2)还要针对秒杀系统做一些保护,针对意料之外的情况设计兜底案,以防止最坏的情况发生。2.从架构师的角度来看,要想打造超大流量并发读写、高性能、高可用的
1,业务开发完毕,不要留尾巴2,给测试人员使用要完善3,
**预警目的** 发现系统问题,解决系统问题。及时通知项目负责人和运营人员,及时处理。处理主次预警,不要让次要预警干扰主要预警的查看。 **预警分类** 1,本系统预警,发现问题及时通知,及时改进 2,外部接口预警,超过次数及时通知运维人员和第三方。具体预警次数根据现有预警和经验业务评估 3,
1,所有项目由具体项目负责人负责上线2,项目负责人负准备上线内容,如1,代码tag2,sql3,配置文件4,需要上线的开发人员3,项目负责人负责发送项目上线申请,邮件说明1,上线牵扯的项目2,项目的功能简介3,项目的配置文件4,项目的sql5,上线tag6,上线具体时间(2018年7月3号22点)7,上线依赖(依赖3.6.1版本接口)8,注意实现4,项目负责人负责邮件通知需求方(如:产品、运行、商
(1)表结构变更必须通知DBA进行审核。(2)禁止有super权限的应用程序账号存在。(3)禁止有DDL、DCL权限的应用程序账号存在。(4)重要项目的数据库方案选型和设计必须提前通知DBA参与。(5)批量导入、导出数据必须通过DBA审核,并在执行过程中观察服务。(6)批量更新数据,如UPDATE、DELETE操作,必须DBA进行审核,并在执行过程中观察服务。(7)产品出现非数据库导致的故障时,如
(1)使用preparedstatement,可以提升性能并避免SQL注入。(2)使用IN代替OR。SQL语句中IN包含的值不应过多,应少于1000个。(3)禁止隐式转换。数值类型禁止加引号;字符串类型必须加引号。(4)避免使用JOIN和子查询。必要时推荐用JOIN代替子查询。(5)禁止在MySQL中进行数学运算和函数运算。(6)减少与数据库交互次数,尽量采用批量SQL语句。(7)拆分复杂SQL为
(1)单张表中索引数量不超过5个。(2)单个索引中的字段数不超过5个。(3)索引名必须全部使用小写。(4)非唯一索引按照“idx字段名称[字段名称]”进用行命名。例如idx_age_name。(5)唯一索引按照“uniq字段名称[字段名称]”进用行命名。例如uniq_age_name。(6)组合索引建议包含所有字段名,过长的字段名可以采用缩写形式。例如idx_age_name_add。(7)表必须
(1)库名、表名、字段名必须使用小写,下划线风格。(2)库名、表名、字段名禁止超过32个字符。(3)库名、表名、字段名必须见名知意。命名与业务、产品线等相关联。(4)库名、表名、字段名禁止使用MySQL保留字。(保留字列表见官方网站)(5)临时库、表名必须以tmp为前缀,并以日期为后缀。例如tmp_test01_20130704。(6)备份库、表必须以bak为前缀,并以日期为后缀。例如bak_te
1,创建阶段确认应用的基础信息确认应用和基础服务的关系2,研发阶段代码提×××并编译打包不同环境发布部署开发和测试在不同环境下进行各类型的测试3,上线阶段申请到应用运行的服务器将应用软件包发布线上运行4,运行阶段持续集成、持续发布、扩容、缩容、监控、容量评估、压测、限流降级、5,销毁阶段应用自身销毁基础设施销毁基础服务销毁
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号