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

建网站挣钱惠州 网站建设app开发

建网站挣钱,惠州 网站建设app开发,网站计算器代码,网站备案地址不是我的地址怎么办MySQL 数据库 MySQL 是一种关系型数据库。开源免费#xff0c;并且方便扩展。在 Java 开发中常用于保存和管理数据。默认端口号 3306。 MySQL 数据库主要分为 Server 和存储引擎两部分#xff0c;现在最常用的存储引擎是 InnoDB。 指令执行过程 MySQL 数据库接收到用户指令…MySQL 数据库 MySQL 是一种关系型数据库。开源免费并且方便扩展。在 Java 开发中常用于保存和管理数据。默认端口号 3306。 MySQL 数据库主要分为 Server 和存储引擎两部分现在最常用的存储引擎是 InnoDB。 指令执行过程 MySQL 数据库接收到用户指令后首先由 Server 负责对数据操作的分析、处理和优化再交给存储引擎执行数据存取操作。 连接器 连接器负责用户登录数据库时的身份认证校验账户密码。校验通过后连接器会连接到权限表并读取该用户的所有权限。如果连接未断开即使该用户权限被管理员修改也不受影响。 查询缓存 缓存 SELECT 语句以及返回的结果。收到查询语句会首先和缓存比对如果相同就直接从查询缓存里返回数据。 更新表后这个表上的所有的查询缓存都会被清空。这导致实际使用场景中查询缓存的作用非常少在 MySQL 8.0 版本后移除。 分析器 如果查询语句未命中缓存或者是更新语句那么将由分析器负责分析 SQL 语句的用途。 词法分析提取关键字提取 SQL 语句的关键元素明确 SQL 语句的功能。 语法分析判断 SQL 语句是否正确是否符合 MySQL 的语法。如果不符合语法则返回错误信息。 优化器 明确 SQL 语句功能后由优化器负责选择尽可能最优的执行方案。比如多个索引的时候选择索引多表查询的时候选择关联顺序。 执行器 确定执行方案后由执行器负责校验该用户有没有权限并交由存储引擎执行语句然后从存储引擎返回数据。 存储引擎 实际执行对数据库数据的存取。目前 MySQL 默认使用 InnoDB 引擎。相比于过去使用 MyISAM 引擎有以下几个优势 索引数据文件本身是主索引。外键支持外键。事务添加本地日志支持安全恢复支持行级锁提高并发度。并发支持多版本并发控制提升性能。 索引 存储结构 MySQL 数据库使用以下两种数据结构存储和查找数据 B 树:(默认适用于连续查询多条数据。哈希表适用于查询单条数据。 索引类型 索引名称|索引类型|字段类型|备注 -|-|- PRIMARY KEY|主索引|主键|字段值不能重复也不能为空。 INDEX|普通索引|自定义字段|无效率低。 UNIQUE|唯一索引|自定义字段|字段值不能重复效率高。 FULLTEXT|文本索引|自定义字段|无用于文本检索。 主索引 在 InnoDB 存储引擎中数据文件本身就是主索引聚簇索引数据以 B 树形式存储根据主键值进行排序。 我们可以为其他字段建立辅助索引非聚簇索引以提高对字段的查询速度但同时会降低表的更新速度。在辅助索引中记录主键值而不是字段地址根据辅助索引查找后仍需要根据主键值在主索引中查询数据。 组合索引 索引内可以包含多个字段N 个字段的组合索引实际建立了 N 个索引。 对 a/b/c 三个字段建立的组合索引实际会先在 a 索引中查找再到 a/b 索引中查找最后在 a/b/c 索引中查找。 视图 视图是一个虚拟表不实际存储数据。其内容会通过查询其他表得到在引用视图时动态生成。 权限管理表的权限管理不能限制到具体的行和列但通过视图则可以限制用户能得到的结果集。数据独立表的结构发生变化不会对用户使用视图查询到的数据产生影响。 外键 从表通过外键关联到主表的主键建立数据表之间的关系。 优点保障数据的一致性和完整性。缺点增加数据之间的耦合度难以集群。因此不推荐使用外键。 删除策略 对主表的数据进行 UPDATE/DELETE 操作时将会影响到关联的从表。 外键模式删除策略限制默认从表有相关数据时主表不能更新/删除。级 联主表记录更新/删除时从表相关记录也会被更新/删除。设置 NULL主表数据更新/删除时从表相关记录的外键值被设为 NULL。无操作啥也不做 日志 当数据库数据发生更改时用日志记录数据库操作。当发生错误或者冲突时可以进行回滚。保证数据的一致性。 bin log 归档日志 最开始 MySQL 并没与 InnoDB 引擎其他存储引擎只有通用的 bin 日志用来归档位于 server 层。 InnoDB 引擎完成主存数据更新后向执行器提交由 bin 日志记录操作。如果主存数据已更新且 bin 日志没有被写入时数据库崩溃后续进行机器备份的时候就会丢失原有数据。这导致数据没有安全恢复的能力一旦数据库发生异常重启之前提交的记录都会丢失。 redolog 重做日志 MySQL 引入 InnoDB 引擎后自带了 redo 日志。用于数据库发生异常重启时系统记录的恢复。 InnoDB 引擎完成主存数据更新但还未提交时由 redo 日志记录操作并进入 prepare 状态。InnoDB 引擎向执行器提交时由 bin 日志记录操作。提交完成后执行器通知 InnoDB 引擎redo 日志进入 commit 状态。 如果 bin 日志没有被写入时数据库崩溃后续进行机器备份的时候就会按照 redo 日志恢复数据。 如果 bin 日志已经写完但 redo 日志还处于 prepare 状态时数据库崩溃。MySQL 会判断 redo 日志是否完整如果完整就立即提交。否则再判断 bin 日志是否完整如果完整就提交 redo 日志不完整就回滚事务。这样就解决了数据一致性的问题。 事务 事务是逻辑上的一组操作要么都执行要么都不执行。保障数据之间的同步。 事务特性 ACID 原子性 事务是最小的执行单位不允许分割。事务的原子性确保动作要么全部完成要么完全不起作用一致性 执行事务前后数据保持一致多个事务对同一个数据读取的结果是相同的隔离性 并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的持久性 一个事务被提交之后。它对数据库中数据的改变是持久的即使数据库发生故障也不应该对其有任何影响。 并发事务潜在问题 丢失修改 事务T1修改数据的过程中另一个并发事务T2也修改了该数据。导致事务T1对数据的修改丢失。 脏读 事务T1修改数据但还未写入数据库时另一个并发事务T2使用了该数据。导致事务T2读取数据可能是不正确的。 不可重复读 事务T1两次读取数据的过程中另一个并发事务T2修改了该数据。导致事务T1两次读取数据的结果不同。 幻读 事务T1两次读取数据集合的过程中另一个并发事务T2插入或删除了部分数据。导致事务T1两次读取数据的结果不同。 数据锁 存储引擎通过给数据加锁来保障事务性。MyISAM 引擎只支持表级锁而 InnoDB 存储引擎支持行级锁和表级锁默认为行级锁。 表级锁对当前操作的整张表加锁实现简单资源消耗也比较少加锁快不会出现死锁。但触发锁冲突的概率最高并发度低。 行级锁只针对当前操作的数据行加锁。大大减少数据库操作的冲突并发度高。但加锁的开销也最大可能会出现死锁。 InnoDB支持三种行锁定方式 间隙锁锁定索引的记录间隙确保索引记录的间隙不变。 Next-Key Lock 是行级锁和间隙锁的组合使用。当 InnoDB 扫描索引记录的时候会首先对索引记录加上行锁Record Lock再对索引记录两边的间隙加上间隙锁Gap Lock。其他事务就不能在这个间隙修改或者插入记录。间隙锁是针对事务隔离级别为可重复读或以上级别可以有效防止幻读的发生。 事务隔离级别 READ-UNCOMMITTEDRU 读取未提交 事务进行读操作时允许其他事务访问事务进行写操作将会禁止其他事务写。 READ-COMMITTEDRC 读取已提交 事务进行读操作时允许其他事务访问事务进行写操作将会禁止其他事务读写。 REPEATABLE-READRR 可重复读 事务进行读操作时会禁止其他事务写事务进行写操作将会禁止其他事务读写。 SERIALIZABLE 可串行化 事务进行读写操作时都会禁止其他事务读写。 隔离级别丢失修改脏读不可重复读幻读读取 - 未提交×√√√已提交读××√√可重复读取×××√序列 化×××× InnoDB 存储引擎默认支持的隔离级别是 REPEATABLE-READRR 且 InnoDB 在该事务隔离级别下使用 Next-Key Lock 锁算法可以避免幻读。InnoDB 存储引擎在分布式事务情况下一般会用到 SERIALIZABLE 隔离级别。 MVCC 公司 MVCC 概念 MVCC 即多版本并发控制维持一个数据的多个版本使得读写操作没有冲突。从而提高数据库并发性能做到即使有读写冲突时也能不加锁非阻塞并发读。 是乐观锁的一整实现方式就是每行都有版本号保存时根据版本号决定是否成功。 读类型 当前读 读取的是记录最新版本同时会对读取的记录进行加锁保证其他并发事务不能修改 选择 Share Mode 中的 Lock 共享锁 select for update ;更新、插入、删除 快照读 可能读到的是数据之前的历史版本.在很多情况下避免了加锁操作降低了开销 像不加锁的select操作就是快照。但如果隔离级别是最高级串行化快照读会退化成当前读。 MVCC 实现 在 InnoDB 存储引擎中每行记录除了我们自定义的字段外还会隐式记录 最近修改记录创建这条记录/最后一次修改该记录的事务ID回滚指针指向这条记录的上一个版本存储于 rollback segment 里。隐藏主键如果数据表没有主键InnoDB 会自动产生一个自增的聚簇索引。删除标记标记该记录是否已被删除。 事务进行快照读操作的时候生产的读视图Read View在该事务执行的快照读的那一刻会生成数据库系统当前的一个快照记录并维护系统当前活跃事务的ID当每个事务开启时都会被分配一个ID 这个ID是递增的所以最新的事务ID值越大。 InnoDB 会根据读取事务 ID 判断应该都什么时间段的数据。 在RC隔离级别下是每个快照读都会生成并获取最新的Read View;而在RR隔离级别下则是同一个事务中的第一个快照读才会创建Read View之后的快照读获取的都是同一个Read View。 数据类型 字符串类型 常用的字符串类型有定长字符串 CHAR 和变长字符串 VARCHAR 两种必须用数字注明可容纳的字符数。 CHARn 表示固定容纳 n 个字符当少于 n 个字符时会使用空格填充。VARCHARn 表示最多容纳 n 个字符当少于 n 个字符时不会补空。起始位和结束位需要额外 3 字节。 英文字母单个字符占 1 字节。汉字单个字符 UTF-8 编码占 3 字节GBK 编码占 2 字节。 对于长字符串数据可以用 TEXT 或 BLOB 类型存储固定占用 65535 字节。其中 TEXT 保存文本格式BLOB 保存二进制格式。如果需要存储更短或更长的字符串类型数据可以使用 TEXT/BLOB 的扩充类型如 TINYTEXT、MEDIUMTEXT 和 LONGTEXT。 类型名称大小字节数据库类型JAVA 类型字符 nN0-255煳字符串VARCHAR瓦查尔N30-65535瓦查尔字符串发短信65535瓦查尔字符串斑点65535斑点字节 CHAR 类型最大只能容纳 255 字节数据已不推荐使用。目前 VARCHAR 支持容纳最大 65535 字节数据且长度不固定能有效节省数据库空间推荐尽量使用 VARCHAR 数据类型取代 TEXT。 数据类型不支持 MySQL 内存临时表进行排序等操作必须在磁盘中进行。尽量不要使用一定要用建议单独建表。 整型 浮点型 布尔型 布尔型数据用 BIT 表示。 类型名称大小字节取值JAVA 类型位10 或 1布尔 整型 整形数据一般用 INT/INTEGER 表示固定占用 4 字节。如果需要存储更短或更长的整型数据可以使用 INT 的扩充类型如 TINYINT、SMALLTEXT 和 MEDIUMTEXT 和 BIGINT。 在声明整型数据时也可以注明显示位宽如 intn。在整形数据不足 n 位时会自动补零几乎没有任何用处。 类型名称大小字节表示范围JAVA 类型TINYINT 公司1(-128127)(0255)整数SMALLINT2(-32 76832 767)(065 535)整数MEDIUMINT3(-8 388 6088 388 607)(016 777 215)整数INT/整数4(-2 147 483 6482 147 483 647)(04 294 967 295)整数BIGINT8非常大BigInteger 大整数 浮点型 常用的浮点型数据类型有 FLOAT/DOUBLE FLOAT 类型固定占用 4 字节DOUBLE 类型固定占用 8 字节。但 FLOAT/DOUBLE 只是近似存储在数据库中我们常用 DECIMAL 类型记录金额在数据库中实际以字符串形式存储以确保不会产生任何误差。 DECIMALMD M 表示最大位数D 表示小数点右侧的位数。如 DECIMAL5,2 小数点前 3 位小数点后 2 位。 类型名称大小字节表示范围JAVA 类型浮4浮双8双十进制 MDM 2BigDecimal 小数 日期类型 java.sql 包内有专用 Java 类型匹配注意数据类型必须是 而不是 。java.sql.Datejava.util.Date 类型大小字节格式表示范围JAVA 类型年1YYYY1901/2155日期日期3YYYY-MM-DD1000-01-01/9999-12-31日期时间3HH:MM:SS-838:59:59/838:59:59时间时间戳4YYYY-MM-DD HH:MM:SS1970-01-01 00:00:00/2038-1-19 11:14:07时间戳日期时间8YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00/9999-12-31 23:59:59时间戳 枚举 集合 create table tab( gender enum(male,remale,secret) -- gender 属性为枚举类型 ); insert into tab values (remale); select * from tab where gender2; -- 两者等价select * from tab where gender remale;复制到剪贴板错误复制 记录字符串但底层数据实际以2个字节的整型smallint保存。 在已知的值中进行单选。最大数量为65535.按保存的位置顺序从1开始逐一递增。 NULL值的索引是NULL。空字符串错误值的索引值是0。 create table tab( gender set(male,remale,secret) -- gender 属性为集合类型 ); insert into tab values (male, remale); 复制到剪贴板错误复制 记录字符串但底层数据实际以8个字节的整型bigint保存。 在已知的值中进行多选。最多有 64 个成员。 -- 查询 flag 字段包含 a,b 的字段 mysql - select * from table_name where FIND_IN_SET(a,d, flag);
http://www.w-s-a.com/news/781466/

相关文章:

  • 网络营销比赛 营销型网站策划热门搜索关键词
  • 网站建设图片代码网络设计师工资
  • 福建网站开发适合交换友情链接的是
  • 企业门户网站建站内乡微网站开发
  • 在线做logo印章网站一般到哪个网站找数据库
  • 哪些网站做免费送东西的广告6郑州人流医院哪家好
  • 高端做网站哪家好sem技术培训
  • 网站做等保是按照什么定级别的做网站的资源哪里找
  • 免费建站网页无需登陆潍坊高端模板建站
  • 北京php网站建设软通动力外包值得去吗
  • 优酷 做视频网站还能成功吗光谷做网站推广哪家好
  • 培训学校网站建设方案网站开发方案设计
  • 网站开发分支结构外贸网站做推广
  • 海南省城乡建设厅网站首页济南网站建设百家号
  • wordpress 图片命名吗北京seo优化哪家公司好
  • 国税网站页面申报撤销怎么做网站空间如何买
  • 简单的购物网站模板跨境建站平台
  • 网站主机多大html网站地图生成
  • 可信赖的邵阳网站建设德清做网站
  • 上传文件网站根目录wordpress博客管理
  • 网站seo优缺点网站建设公司咨
  • 网站设计需要会什么建设网站的目的以及意义
  • 怎么样推广自己的网站wordpress register_form
  • 网站公司建站凤翔网站建设
  • 网站建设协低价格的网站建设公司
  • 研发网站建设报价深圳网站建设前十名
  • 宠物发布网站模板wordpress中文免费电商模板
  • 济南做网站创意服装品牌策划公司
  • 本地电脑做视频网站 外网连接不上软件商城源码
  • 足球直播网站怎么做crm系统介绍