By default, options are auto-loaded. So all options with autoload: yes
will be fetched very early. Your option will not need an additional query.
Also, database access is often faster and more reliable than file access. The options table is also usually included in database backups, and it can be exported in multiple formats. So stick with options.
What you should do: escape the URL. It might have been compromised, so …
if ( ! empty ( $options['div_background_url'] )
{
$section_background_url = esc_url( $options['div_background_url'] );
echo "<section style="background-image: url($section_background_url);"></section>";
}
You could move the custom styles to one style
element in the head
element.